aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/ChangeLog7
-rw-r--r--src/interp/i-spec2.boot10
-rw-r--r--src/testsuite/interpreter/aw-412.input3
3 files changed, 18 insertions, 2 deletions
diff --git a/src/ChangeLog b/src/ChangeLog
index 1cb0b285..3052790f 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,5 +1,12 @@
2008-05-29 Gabriel Dos Reis <gdr@cs.tamu.edu>
+ Fix AW/421.
+ * interp/i-spec2.boot (uphas): When compiling a function, don't
+ bother evaluating type variables.
+ * testsuite/interpreter/aw-412.input: Add.
+
+2008-05-29 Gabriel Dos Reis <gdr@cs.tamu.edu>
+
* interp/i-analy.boot (conceptualType): Only Mode, Domain, and
Category are conceptually abstract.
* testsuite/interpreter/category.input: Add a testcase.
diff --git a/src/interp/i-spec2.boot b/src/interp/i-spec2.boot
index c1189335..f3362bff 100644
--- a/src/interp/i-spec2.boot
+++ b/src/interp/i-spec2.boot
@@ -193,13 +193,19 @@ uphas t ==
t isnt [op,type,prop] => nil
-- handler for category and attribute queries
type :=
- isLocalVar(type) => ["unabbrev", type]
+ isLocalVar(type) =>
+ $genValue => ["evaluateType", ["unabbrev", type]]
+ -- At this point, type will have already been reduced to
+ -- its object representation.
+ ["devaluate", type]
MKQ unabbrev type
catCode :=
+ -- FIXME: when we come to support category valued variable
+ -- this code needs to be adapted.
prop := unabbrev prop
evaluateType0 prop => ["evaluateType", MKQ prop]
MKQ prop
- code:=["newHasTest",["evaluateType", type], catCode]
+ code:=["newHasTest",type, catCode]
if $genValue then code := wrap timedEVALFUN code
putValue(op,objNew(code,$Boolean))
putModeSet(op,[$Boolean])
diff --git a/src/testsuite/interpreter/aw-412.input b/src/testsuite/interpreter/aw-412.input
new file mode 100644
index 00000000..4981aff6
--- /dev/null
+++ b/src/testsuite/interpreter/aw-412.input
@@ -0,0 +1,3 @@
+f(x: Domain): Integer ==
+ x has IntegralDomain => 1
+ 0