From 54a6b006a39fd52cb0110e4ae3e2cec8e2708ec6 Mon Sep 17 00:00:00 2001 From: dos-reis Date: Thu, 29 May 2008 07:00:40 +0000 Subject: Fix AW/421. * interp/i-spec2.boot (uphas): When compiling a function, don't bother evaluating type variables. * testsuite/interpreter/aw-412.input: Add. --- src/ChangeLog | 7 +++++++ src/interp/i-spec2.boot | 10 ++++++++-- src/testsuite/interpreter/aw-412.input | 3 +++ 3 files changed, 18 insertions(+), 2 deletions(-) create mode 100644 src/testsuite/interpreter/aw-412.input (limited to 'src') diff --git a/src/ChangeLog b/src/ChangeLog index 1cb0b285..3052790f 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,10 @@ +2008-05-29 Gabriel Dos Reis + + 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 * interp/i-analy.boot (conceptualType): Only Mode, Domain, and 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 -- cgit v1.2.3