aboutsummaryrefslogtreecommitdiff
path: root/src/interp
diff options
context:
space:
mode:
Diffstat (limited to 'src/interp')
-rw-r--r--src/interp/br-data.boot4
-rw-r--r--src/interp/define.boot12
-rw-r--r--src/interp/lisplib.boot4
3 files changed, 8 insertions, 12 deletions
diff --git a/src/interp/br-data.boot b/src/interp/br-data.boot
index 204db22a..0837c709 100644
--- a/src/interp/br-data.boot
+++ b/src/interp/br-data.boot
@@ -493,12 +493,12 @@ getImports conname == --called by mkUsersHashTable
--============================================================================
-- Get Hierarchical Information
--============================================================================
-getParentsFor(db,formalParams,constructorCategory) ==
+getParentsFor(db,formalParams) ==
--called by compDefineFunctor1
acc := nil
formals := TAKE(#formalParams,$TriangleVariableList)
constructorForm := dbConstructorForm db
- for x in folks constructorCategory repeat
+ for x in folks dbCategory db repeat
x := applySubst(pairList(formals,formalParams),x)
x := applySubst(pairList(formalParams,IFCDR constructorForm),x)
acc := [:explodeIfs x,:acc]
diff --git a/src/interp/define.boot b/src/interp/define.boot
index d135d4ef..99035a03 100644
--- a/src/interp/define.boot
+++ b/src/interp/define.boot
@@ -66,7 +66,6 @@ $forceAdd := false
$functionStats := nil
$functorStats := nil
-$lisplibCategory := nil
$CheckVectorList := []
$pairlis := []
$functorTarget := nil
@@ -940,7 +939,7 @@ compDefineCategory1(df is ['DEF,form,sig,body],m,e,prefix,fal) ==
if not skipCategoryPackage? categoryCapsule then [.,.,e] :=
$insideCategoryPackageIfTrue: local := true
$categoryPredicateList: local :=
- makeCategoryPredicates(form,$lisplibCategory)
+ makeCategoryPredicates(form,dbCategory constructorDB form.op)
T := compDefine1(mkCategoryPackage(form,cat,categoryCapsule),$EmptyMode,e)
or return stackSemanticError(
['"cannot compile defaults of",:bright opOf form],nil)
@@ -1046,6 +1045,7 @@ compDefineCategory2(form,signature,body,m,e,$prefix,$formalArgList) ==
-- following line causes cats with no with or Join to be fresh copies
if opOf(formalBody)~='Join and opOf(formalBody)~='mkCategory then
formalBody := ['Join, formalBody]
+ dbCategory(db) := formalBody
body := optFunctorBody compOrCroak(formalBody,signature'.target,e).expr
if $extraParms ~= nil then
formals := nil
@@ -1073,8 +1073,7 @@ compDefineCategory2(form,signature,body,m,e,$prefix,$formalArgList) ==
dbDualSignature(db) :=
[isCategoryForm(t,e) for t in dbConstructorModemap(db).mmSource]
dbDualSignature(db) := [true,:dbDualSignature db]
- $lisplibCategory:= formalBody
- dbPrincipals(db) := getParentsFor(db,$FormalMapVariableList,$lisplibCategory)
+ dbPrincipals(db) := getParentsFor(db,$FormalMapVariableList)
dbAncestors(db) := computeAncestorsOf($form,nil)
dbModemaps(db) := modemapsFromCategory([op',:sargl],formalBody,signature')
dbBeingDefined?(db) := false
@@ -1088,7 +1087,6 @@ mkConstructor form ==
compDefineCategory(df,m,e,prefix,fal) ==
$domainShell: local := nil -- holds the category of the object being compiled
- $lisplibCategory: local := nil
-- since we have so many ways to say state the kind of a constructor,
-- make sure we do have some minimal internal coherence.
lhs := second df
@@ -1405,6 +1403,7 @@ compDefineFunctor1(df is ['DEF,form,signature,body],
-- 3. give operator a 'modemap property
modemap := [[parForm,:parSignature],[true,$op]]
dbConstructorModemap(db) := modemap
+ dbCategory(db) := modemap.mmTarget
dbDualSignature(db) := [isCategoryForm(t,$e) for t in modemap.mmSource]
dbDualSignature(db) := [false,:dbDualSignature db]
@@ -1443,8 +1442,7 @@ compDefineFunctor1(df is ['DEF,form,signature,body],
reportOnFunctorCompilation()
-- 5.
- $lisplibCategory := modemap.mmTarget
- dbPrincipals(db) := getParentsFor(db,$FormalMapVariableList,$lisplibCategory)
+ dbPrincipals(db) := getParentsFor(db,$FormalMapVariableList)
dbAncestors(db) := computeAncestorsOf($form,nil)
$insideFunctorIfTrue:= false
if not $bootStrapMode then
diff --git a/src/interp/lisplib.boot b/src/interp/lisplib.boot
index f8cf0867..d565a74e 100644
--- a/src/interp/lisplib.boot
+++ b/src/interp/lisplib.boot
@@ -413,7 +413,6 @@ compDefineLisplib(df:=["DEF",[op,:.],:.],m,e,prefix,fal,fn) ==
$libFile: local := nil
$lisplibVariableAlist: local := nil
-- $lisplibRelatedDomains: local := nil --from ++ Related Domains: see c-doc
- $lisplibCategory: local := nil
--for categories, is rhs of definition; otherwise, is target of functor
--will eventually become the "constructorCategory" property in lisplib
--set in compDefineCategory1 if category, otherwise in finalizeLisplib
@@ -526,11 +525,10 @@ finalizeLisplib(ctor,libName) ==
writeKind(ctor,kind,$libFile)
writeConstructorModemap(ctor,mm,$libFile)
writeDualSignature(db,$libFile)
- $lisplibCategory := $lisplibCategory or mm.mmTarget
-- set to target of mm for package/domain constructors;
-- to the right-hand sides (the definition) for category constructors
if dbConstructorKind db = 'category then
- writeCategory(ctor,$lisplibCategory,$libFile)
+ writeCategory(ctor,dbCategory db,$libFile)
lisplibWrite('"sourceFile",namestring _/EDITFILE,$libFile)
lisplibWrite('"modemaps",dbModemaps db,$libFile)
opsAndAtts := getConstructorOpsAndAtts(form,kind,mm)