diff options
Diffstat (limited to 'src/interp')
-rw-r--r-- | src/interp/define.boot | 12 | ||||
-rw-r--r-- | src/interp/nruncomp.boot | 4 |
2 files changed, 10 insertions, 6 deletions
diff --git a/src/interp/define.boot b/src/interp/define.boot index d2fa9601..5ef8e842 100644 --- a/src/interp/define.boot +++ b/src/interp/define.boot @@ -44,7 +44,8 @@ module define where compCapsule: (%Form, %Mode, %Env) -> %Maybe %Triple compJoin: (%Form,%Mode,%Env) -> %Maybe %Triple compAdd: (%Form, %Mode, %Env) -> %Maybe %Triple - compCategory: (%Form,%Mode,%Env) -> %Maybe %Triple + compCategory: (%Form,%Mode,%Env) -> %Maybe %Triple + evalCategoryForm: (%Form,%Env) -> %Maybe %Shell --% @@ -909,7 +910,7 @@ macroExpandList(l,e) == mkEvalableCategoryForm c == c is [op,:argl] => - op="Join" => ["Join",:[mkEvalableCategoryForm x for x in argl]] + op is "Join" => [op,:[mkEvalableCategoryForm x for x in argl]] op is "DomainSubstitutionMacro" => mkEvalableCategoryForm second argl op is "mkCategory" => c builtinCategoryName? op => @@ -922,6 +923,9 @@ mkEvalableCategoryForm c == m=$Category => x MKQ c +evalCategoryForm(x,e) == + eval mkEvalableCategoryForm x + ++ Return true if we should skip compilation of category package. ++ This situation happens either when there is no default, of we are in ++ bootstrap mode. @@ -986,7 +990,7 @@ mkCategoryPackage(form is [op,:argl],cat,def) == x isnt [.,:.] => oplist x is ['DEF,y,:.] => [opOf y,:oplist] fn(x.args,fn(x.op,oplist)) - catvec := eval mkEvalableCategoryForm form + catvec := evalCategoryForm(form,$e) fullCatOpList := categoryExports JoinInner([catvec],$e) catOpList := [mkExportFromDescription desc for desc in fullCatOpList @@ -1160,7 +1164,7 @@ compDefineCategory(df,m,e,fal) == compMakeCategoryObject: (%Form,%Env) -> %Maybe %CatObjRes compMakeCategoryObject(c,$e) == not isCategoryForm(c,$e) => nil - u:= mkEvalableCategoryForm c => [eval u,$Category,$e] + u := evalCategoryForm(c,$e) => [u,$Category,$e] nil predicatesFromAttributes: %List %Form -> %List %Form diff --git a/src/interp/nruncomp.boot b/src/interp/nruncomp.boot index adedec63..58a7531f 100644 --- a/src/interp/nruncomp.boot +++ b/src/interp/nruncomp.boot @@ -555,8 +555,8 @@ NRTsetVector4a(sig,form,cond) == $uncondList := append(domainList,$uncondList) if isCategoryForm(form,$e) then $uncondList := [form,:$uncondList] $uncondList - evalform := eval mkEvalableCategoryForm form - cond = true => + evalform := evalCategoryForm(form,$e) + cond is true => $uncondList := [form,:append(categoryPrincipals evalform,$uncondList)] $condList := [[cond,[form,:categoryPrincipals evalform]],:$condList] |