aboutsummaryrefslogtreecommitdiff
path: root/src/interp/template.boot
diff options
context:
space:
mode:
Diffstat (limited to 'src/interp/template.boot')
-rw-r--r--src/interp/template.boot12
1 files changed, 8 insertions, 4 deletions
diff --git a/src/interp/template.boot b/src/interp/template.boot
index 196a3349..d5c4c816 100644
--- a/src/interp/template.boot
+++ b/src/interp/template.boot
@@ -100,9 +100,10 @@ evalSlotDomain(u,dollar) ==
VECP (y := dollar.u) => y
y is ['SETELT,:.] => eval y--lazy domains need to marked; this is dangerous?
y is [v,:.] =>
- VECP v => lazyDomainSet(y,dollar,u) --old style has [$,code,:lazyt]
- IDENTP v and constructor? v or MEMQ(v,'(Record Union Mapping)) =>
- lazyDomainSet(y,dollar,u) --new style has lazyt
+ VECP v => lazyDomainSet(y,dollar,u) --old style has [$,code,:lazyt]
+ IDENTP v and constructor? v
+ or MEMQ(v,'(Record Union Mapping Enumeration)) =>
+ lazyDomainSet(y,dollar,u) --new style has lazyt
y
y
u is ['NRTEVAL,y] => eval y
@@ -113,6 +114,7 @@ evalSlotDomain(u,dollar) ==
u is ['Union,:argl] and first argl is ['_:,.,.] =>
APPLY('Union,[['_:,tag,evalSlotDomain(dom,dollar)]
for [.,tag,dom] in argl])
+ u is ["Enumeration",:.] => eval u
u is [op,:argl] => APPLY(op,[evalSlotDomain(x,dollar) for x in argl])
systemErrorHere '"evalSlotDomain"
@@ -286,6 +288,8 @@ NRTaddInner x ==
getConstructorSignature first x is [.,:ml] =>
for y in rest x for m in ml | not (y = '$) repeat
isCategoryForm(m,$CategoryFrame) => NRTinnerGetLocalIndex y
+ x is ["Enumeration",:.] =>
+ for y in rest x repeat NRTinnerGetLocalIndex y
keyedSystemError("S2NR0003",[x])
x
@@ -295,7 +299,7 @@ NRTinnerGetLocalIndex x ==
atom x => x
-- following test should skip Unions, Records, Mapping
op := first x
- MEMQ(op,'(Union Record Mapping _[_|_|_])) => NRTgetLocalIndex x
+ MEMQ(op,'(Union Record Mapping Enumeration _[_|_|_])) => NRTgetLocalIndex x
constructor? op => NRTgetLocalIndex x
NRTaddInner x