aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/ChangeLog5
-rw-r--r--src/interp/compiler.boot3
2 files changed, 6 insertions, 2 deletions
diff --git a/src/ChangeLog b/src/ChangeLog
index 8cc632b0..3037cb37 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,8 @@
+2011-10-24 Gabriel Dos Reis <gdr@cs.tamu.edu>
+
+ * interp/compiler.boot (compArgumentsAndTryAgain): Fail only if
+ elaboration of all arguments fails.
+
2011-10-23 Gabriel Dos Reis <gdr@cs.tamu.edu>
* interp/compiler.boot (compOrCroak1): Drop last argument. Tidy.
diff --git a/src/interp/compiler.boot b/src/interp/compiler.boot
index c6ffa376..e0fae8b4 100644
--- a/src/interp/compiler.boot
+++ b/src/interp/compiler.boot
@@ -494,8 +494,7 @@ compArgumentsAndTryAgain(form is [.,:argl],m,e) ==
-- modemap with selector b
form is ["elt",a,.] =>
([.,.,e]:= comp(a,$EmptyMode,e) or return nil; compForm1(form,m,e))
- u := for x in argl repeat [.,.,e]:= comp(x,$EmptyMode,e) or return "failed"
- u is "failed" => nil
+ +/[(e := T.env; 1) for x in argl | T := comp(x,$EmptyMode,e)] = 0 => nil
compForm1(form,m,e)
outputComp(x,e) ==