From 82b4511dffa72a7521bd751ccb7d220ed4f2f7ae Mon Sep 17 00:00:00 2001 From: dos-reis Date: Fri, 25 Jan 2008 05:21:41 +0000 Subject: Fix AW/272 * interp/i-spec1.boot (compileADEFBody): Don't evaluate unnamed functions. Compile them instead. * testsuite/interpreter/aw-272.input: New. --- src/ChangeLog | 7 +++++++ src/interp/i-spec1.boot | 4 ++-- src/testsuite/interpreter/aw-272.input | 18 ++++++++++++++++++ 3 files changed, 27 insertions(+), 2 deletions(-) create mode 100644 src/testsuite/interpreter/aw-272.input (limited to 'src') diff --git a/src/ChangeLog b/src/ChangeLog index bd8b57bf..86066b4d 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,10 @@ +2008-01-24 Gabriel Dos Reis + + Fix AW/272 + * interp/i-spec1.boot (compileADEFBody): Don't evaluate unnamed + functions. Compile them instead. + * testsuite/interpreter/aw-272.input: New. + 2008-01-22 Gabriel Dos Reis * algebra/any.spad.pamphlet (empty$Scope): Use literal empty list. diff --git a/src/interp/i-spec1.boot b/src/interp/i-spec1.boot index 9190d67d..14c28dcd 100644 --- a/src/interp/i-spec1.boot +++ b/src/interp/i-spec1.boot @@ -178,8 +178,8 @@ compileADEFBody(t,vars,types,body,computedResultType) == -- -- MCD 13/3/96 if not $definingMap and ($genValue or $compilingMap) then - fun := ["function",["LAMBDA",[:vars,'envArg],body]] - code := wrap timedEVALFUN ['LIST,fun] + fun := [$mapName,["LAMBDA",[:vars,'envArg],body]] + code := wrap compileInteractive fun else $freeVariables := [] $boundVariables := [minivectorName,:vars] diff --git a/src/testsuite/interpreter/aw-272.input b/src/testsuite/interpreter/aw-272.input new file mode 100644 index 00000000..1d81fe00 --- /dev/null +++ b/src/testsuite/interpreter/aw-272.input @@ -0,0 +1,18 @@ +++ Contributed by +-- Issue: variables local to unnamed functions incorrectly handled. + +f x == + a := 3 + x + a + +f 3 + + +g := x +-> (x+2 ; x+a) + +g 3 + +h := x +-> (a := 3 ; x+a) + +h 3 + -- cgit v1.2.3