diff options
Diffstat (limited to 'src/interp')
-rw-r--r-- | src/interp/br-data.boot | 8 | ||||
-rw-r--r-- | src/interp/cattable.boot | 3 | ||||
-rw-r--r-- | src/interp/database.boot | 3 | ||||
-rw-r--r-- | src/interp/define.boot | 13 |
4 files changed, 16 insertions, 11 deletions
diff --git a/src/interp/br-data.boot b/src/interp/br-data.boot index d4d41461..dbc7eb16 100644 --- a/src/interp/br-data.boot +++ b/src/interp/br-data.boot @@ -94,11 +94,11 @@ buildLibdb(:options) == --called by buildDatabase (database.boot) removeFile '"temp.text" buildLibdbConEntry conname == - null getConstructorModemap conname => nil + builtinConstructor? conname => nil abb:= getConstructorAbbreviationFromDB conname $conname := conname - conform := getConstructorFormFromDB conname or [conname] --hack for Category,.. - $conform := dbMkForm substitute('T,"T$",conform) + conform := getConstructorFormFromDB conname + $conform := dbMkForm substitute("T","T$",conform) null $conform => nil $exposed? := (isExposedConstructor conname => '"x"; '"n") $doc := getConstructorDocumentationFromDB conname @@ -441,7 +441,7 @@ getDefaultPackageClients con == --called by mkUsersHashTable --============================================================================ mkDependentsHashTable() == --called by buildDatabase (database.boot) $depTb := MAKE_-HASH_-TABLE() - for nam in allConstructors() repeat + for nam in allConstructors() | not builtinConstructor? nam repeat for con in getArgumentConstructors nam repeat tableValue($depTb,con) := [nam,:tableValue($depTb,con)] for [k,:v] in entries $depTb repeat diff --git a/src/interp/cattable.boot b/src/interp/cattable.boot index a25c91b5..4cd1d444 100644 --- a/src/interp/cattable.boot +++ b/src/interp/cattable.boot @@ -61,7 +61,8 @@ genCategoryTable() == genTempCategoryTable() domainTable := [addDomainToTable(con,getConstrCat getConstructorCategory con) - for con in allConstructors() | getConstructorKindFromDB con is "domain"] + for con in allConstructors() | not builtinFunctorName? con + and getConstructorKindFromDB con is "domain"] -- $nonLisplibDomains, $noCategoryDomains are set in BUILDOM BOOT specialDs := setDifference($nonLisplibDomains,$noCategoryDomains) domainTable:= [:[addDomainToTable(id, getConstrCat eval([id]).3) diff --git a/src/interp/database.boot b/src/interp/database.boot index dc942f85..648ce919 100644 --- a/src/interp/database.boot +++ b/src/interp/database.boot @@ -82,7 +82,8 @@ getConstructorAncestorsFromDB ctor == getConstructorModemap: %Constructor -> %Mode getConstructorModemap ctor == GETDATABASE(ctor, 'CONSTRUCTORMODEMAP) - + or dbConstructorModemap loadDBIfNecessary constructorDB ctor + getConstructorFormFromDB: %Constructor -> %Form getConstructorFormFromDB ctor == GETDATABASE(ctor,"CONSTRUCTORFORM") diff --git a/src/interp/define.boot b/src/interp/define.boot index c13b52f7..5e46a464 100644 --- a/src/interp/define.boot +++ b/src/interp/define.boot @@ -517,15 +517,15 @@ getXmode(x,e) == NRTgetLookupFunction(db,addForm,env) == $why: local := nil domform := dbSubstituteFormals(db,dbConstructorForm db) - exCategory := dbCategory db + cat := dbCategory db addForm isnt [.,:.] => ident? addForm and (m := getmode(addForm,env)) ~= nil and isCategoryForm(m,env) and - extendsCategory(db,domform,exCategory,dbSubstituteFormals(db,m),env) => + extendsCategory(db,domform,cat,dbSubstituteFormals(db,m),env) => 'lookupIncomplete 'lookupComplete addForm := dbSubstituteFormals(db,addForm) - NRTextendsCategory1(db,domform,exCategory,getExportCategory addForm,env) => + NRTextendsCategory1(db,domform,cat,getBaseExports(db,addForm),env) => 'lookupIncomplete [u,msg,:v] := $why SAY '"--------------non extending category----------------------" @@ -537,12 +537,15 @@ NRTgetLookupFunction(db,addForm,env) == SAY '"----------------------------------------------------------" 'lookupComplete -getExportCategory form == +getBaseExports(db,form) == [op,:argl] := form op is 'Record => ['RecordCategory,:argl] op is 'Union => ['UnionCategory,:argl] op is 'Enumeration => ['EnumerationCategory,:argl] op is 'Mapping => ['MappingCategory,:argl] + op is '%Comma => ['Join, + :[getBaseExports(db,substSlotNumbers(x,dbTemplate db,dbConstructorForm db)) + for x in argl]] [[.,target,:tl],:.] := getConstructorModemap op applySubst(pairList($FormalMapVariableList,argl),target) @@ -562,7 +565,7 @@ extendsCategory(db,dom,u,v,env) == v is ["CATEGORY",.,:l] => and/[extendsCategory(db,dom,u,x,env) for x in l] v is ["SubsetCategory",cat,d] => extendsCategory(db,dom,u,cat,env) and isSubset(dom,d,env) - v := substSlotNumbers(v,dbTemplate db,$functorForm) + v := substSlotNumbers(v,dbTemplate db,dbConstructorForm db) extendsCategoryBasic(dom,u,v,env) => true $why := v is ['SIGNATURE,op,sig,:.] => |