diff options
Diffstat (limited to 'src/interp/compiler.boot')
-rw-r--r-- | src/interp/compiler.boot | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/src/interp/compiler.boot b/src/interp/compiler.boot index 6fcf6ace..b3743845 100644 --- a/src/interp/compiler.boot +++ b/src/interp/compiler.boot @@ -439,7 +439,7 @@ compSymbol(s,m,e) == sameObject?(s,m) or isLiteral(s,e) => [quote s,s,e] v := get(s,"value",e) => symbolMember?(s,$functorLocalParameters) => - getLocalIndex s + getLocalIndex(constructorDB currentConstructor e,s) [s,v.mode,e] --s will be replaced by an ELT form in beforeCompile [s,v.mode,e] --s has been SETQd @@ -952,7 +952,8 @@ setqSingle(id,val,m,E) == --all we do now is to allocate a slot number for lhs --e.g. the %LET form below will be changed by putInLocalDomainReferences form := - k := NRTassocIndex(id) => ['%store,['%tref,'$,k],x] + db := constructorDB currentConstructor e' + k := NRTassocIndex(db,id) => ['%store,['%tref,'$,k],x] ["%LET",id,x] [form,m',e'] @@ -2407,9 +2408,9 @@ numberize x == [numberize first x,:numberize rest x] ++ If there is a local reference to mode `m', return it. -localReferenceIfThere m == +localReferenceIfThere(m,e) == m is "$" => m - idx := NRTassocIndex m => ['%tref,'$,idx] + idx := NRTassocIndex(constructorDB currentConstructor e,m) => ['%tref,'$,idx] quote m massageLoop x == main x where @@ -2479,7 +2480,7 @@ compRepeatOrCollect(form,m,e) == itl':= substitute(["UNTIL",untilCode],'$until,itl') form':= $loopKind = "%CollectV" => - ["%CollectV",localReferenceIfThere m',:itl',body'] + ["%CollectV",localReferenceIfThere(m',e'),:itl',body'] -- We are phasing out use of LISP macros COLLECT and REPEAT. $loopKind = "COLLECT" => ['%collect,:itl',body'] [$loopKind,:itl',body'] |