aboutsummaryrefslogtreecommitdiff
path: root/src/interp
diff options
context:
space:
mode:
Diffstat (limited to 'src/interp')
-rw-r--r--src/interp/i-analy.boot4
-rw-r--r--src/interp/i-eval.boot2
-rw-r--r--src/interp/i-object.boot4
3 files changed, 8 insertions, 2 deletions
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