diff options
-rw-r--r-- | src/ChangeLog | 7 | ||||
-rw-r--r-- | src/interp/i-analy.boot | 4 | ||||
-rw-r--r-- | src/interp/i-eval.boot | 2 | ||||
-rw-r--r-- | src/interp/i-object.boot | 4 |
4 files changed, 15 insertions, 2 deletions
diff --git a/src/ChangeLog b/src/ChangeLog index c358d8b4..18d4e869 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,5 +1,12 @@ 2008-05-17 Gabriel Dos Reis <gdr@cs.tamu.edu> + Fix AW/16 + * interp/i-analy.boot (isConceptualCategory): New. + * interp/i-object.boot (getValueNormalForm): Use it. + * testsuite/interpreter/aw-16.input: New. + +2008-05-17 Gabriel Dos Reis <gdr@cs.tamu.edu> + * interp/i-object.boot (wrapped2Quote): Reomve. (getValueNormalForm): New. * interp/i-code.boot (intCodeGenCOERCE): Use it. diff --git a/src/interp/i-analy.boot b/src/interp/i-analy.boot index 6dbd19fe..cfd483e5 100644 --- a/src/interp/i-analy.boot +++ b/src/interp/i-analy.boot @@ -633,6 +633,10 @@ conceptualType type == categoryForm?(type) => $Category $Domain +++ Returns true is `t' conceptually describes a domain or package. +isConceptualCategory: %Mode -> %Boolean +isConceptualCategory t == + t = $Type or t = $Category or t = $Domain or categoryForm? t bottomUpType(t, type) == mode := conceptualType type diff --git a/src/interp/i-eval.boot b/src/interp/i-eval.boot index d8284829..fa8729dc 100644 --- a/src/interp/i-eval.boot +++ b/src/interp/i-eval.boot @@ -294,7 +294,7 @@ getArgValue1(a,t) == getMappingArgValue(a,t,m) t' := coerceOrRetract(t',t) t' and getValueNormalForm t' - systemErrorHere '"getArgValue" + systemErrorHere '"getArgValue1" getArgValue2(a,t,se?,opName) == se? and (objMode(getValue a) ^= t) => diff --git a/src/interp/i-object.boot b/src/interp/i-object.boot index 5cbcd2ca..5a793c2c 100644 --- a/src/interp/i-object.boot +++ b/src/interp/i-object.boot @@ -109,7 +109,9 @@ getValueNormalForm obj == atom val => val [op,:argl] := val op = "WRAPPED" => MKQ argl - IDENTP op and isConstructorName op => instantiationNormalForm(op,argl) + IDENTP op and isConstructorName op => + isConceptualCategory objMode obj => instantiationNormalForm(op,argl) + MKQ val -- what else can it be? Don't know; leave it alone. val |