aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/ChangeLog7
-rw-r--r--src/interp/i-analy.boot4
-rw-r--r--src/interp/i-eval.boot2
-rw-r--r--src/interp/i-object.boot4
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