diff options
-rw-r--r-- | src/ChangeLog | 7 | ||||
-rw-r--r-- | src/interp/i-spec2.boot | 10 | ||||
-rw-r--r-- | src/testsuite/interpreter/aw-412.input | 3 |
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 |