From 5538dec500e83f0903461c40ec6b26cadee01e80 Mon Sep 17 00:00:00 2001 From: dos-reis Date: Sun, 18 May 2008 04:22:21 +0000 Subject: Fix AW/16 * interp/i-analy.boot (isConceptualCategory): New. * interp/i-object.boot (getValueNormalForm): Use it. * testsuite/interpreter/aw-16.input: New. --- src/ChangeLog | 7 +++++++ src/interp/i-analy.boot | 4 ++++ src/interp/i-eval.boot | 2 +- src/interp/i-object.boot | 4 +++- 4 files changed, 15 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/ChangeLog b/src/ChangeLog index c358d8b4..18d4e869 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,10 @@ +2008-05-17 Gabriel Dos Reis + + 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 * interp/i-object.boot (wrapped2Quote): Reomve. 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 -- cgit v1.2.3