diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/ChangeLog | 5 | ||||
-rw-r--r-- | src/interp/compiler.boot | 4 |
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. |