aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/ChangeLog5
-rw-r--r--src/interp/compiler.boot5
2 files changed, 9 insertions, 1 deletions
diff --git a/src/ChangeLog b/src/ChangeLog
index a17d628d..2c0b560a 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,8 @@
+2008-12-03 Gabriel Dos Reis <gdr@cs.tamu.edu>
+
+ * interp/compiler.boot (compIs): Error if left operand is not a
+ domain expression.
+
2008-12-02 Gabriel Dos Reis <gdr@cs.tamu.edu>
* interp/parsing.lisp (initial-substring-p): Match case sensitively.
diff --git a/src/interp/compiler.boot b/src/interp/compiler.boot
index 3245b887..81860046 100644
--- a/src/interp/compiler.boot
+++ b/src/interp/compiler.boot
@@ -1405,7 +1405,10 @@ compColonInside(x,m,e,m') ==
compIs: (%Form,%Mode,%Env) -> %Maybe %Triple
compIs(["is",a,b],m,e) ==
- [aval,am,e] := comp(a,$EmptyMode,e) or return nil
+ [aval,am,e] := comp(a,$EmptyMode,e) or
+ stackAndThrow('"Cannot determine the type of the expression %1b",[a])
+ not isCategoryForm(am,e) =>
+ stackAndThrow('"Expression %1b does not designate a domain",[a])
[bval,bm,e] := comp(b,$EmptyMode,e) or return nil
T:= [["domainEqual",aval,bval],$Boolean,e]
coerce(T,m)