aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/ChangeLog5
-rw-r--r--src/interp/compiler.boot4
2 files changed, 8 insertions, 1 deletions
diff --git a/src/ChangeLog b/src/ChangeLog
index e5045df1..38b6a04e 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,8 @@
+2011-02-15 Gabriel Dos Reis <gdr@cs.tamu.edu>
+
+ * interp/compiler.boot (coerceExtraHard): Explicitly fail if
+ autoCoerceByModemap fails.
+
2011-02-14 Gabriel Dos Reis <gdr@cs.tamu.edu>
* interp/compiler.boot (getUnionMode): Remove.
diff --git a/src/interp/compiler.boot b/src/interp/compiler.boot
index 73f7410d..34f55b20 100644
--- a/src/interp/compiler.boot
+++ b/src/interp/compiler.boot
@@ -1704,7 +1704,9 @@ coerceExtraHard(T is [x,m',e],m) ==
-- For values from domains satisfying Union-like properties, apply
-- implicit retraction if clear from context.
(t := hasType(x,e)) and unionLike?(m',e) is ['UnionCategory,:l]
- and member(t,l) => coerce(autoCoerceByModemap(T,t),m)
+ and member(t,l) =>
+ T' := autoCoerceByModemap(T,t) => coerce(T',m)
+ nil
-- Give it one last chance.
-- FIXME: really, we shouldn't. Codes relying on this are
-- FIXME: inherently difficult to comprehend and likely broken.