diff options
Diffstat (limited to 'src/interp')
-rw-r--r-- | src/interp/daase.lisp | 14 | ||||
-rw-r--r-- | src/interp/database.boot | 7 | ||||
-rw-r--r-- | src/interp/define.boot | 2 |
3 files changed, 7 insertions, 16 deletions
diff --git a/src/interp/daase.lisp b/src/interp/daase.lisp index 4bfd30da..294936ff 100644 --- a/src/interp/daase.lisp +++ b/src/interp/daase.lisp @@ -453,7 +453,7 @@ (setf (|dbCategory| dbstruct) (sixth item)) (setf (get (seventh item) 'abbreviationfor) (first item)) ;invert ; (setf (|dbDualSignature| dbstruct) (eighth item)) - (setf (|dbAncestors| dbstruct) (nth 10 item)) +; (setf (|dbAncestors| dbstruct) (nth 10 item)) ; (setf (|dbSuperDomain| dbstruct) (nth 11 item)) )) @@ -659,10 +659,6 @@ (when (setq data (get constructor 'abbreviationfor)))) (defaultdomain (setq data (cadr (assoc constructor *defaultdomain-list*)))) - (ancestors - (setq stream *interp-stream*) - (when struct - (setq data (|dbAncestors| struct)))) (sourcefile (setq stream *browse-stream*) (when struct @@ -697,8 +693,6 @@ (setf (|dbModule| struct) data)) (constructor (setf (|dbConstructor| struct) data)) - (ancestors - (setf (|dbAncestors| struct) data)) (documentation (setf (database-documentation struct) data)) (users @@ -845,12 +839,6 @@ (fetchdata alist in "superDomain")) (addoperations key oldmaps) (unless make-database? - (if (eq kind '|category|) - (setf (|dbAncestors| dbstruct) - (|applySubst| - (|pairList| (cdr constructorform) - |$FormalMapVariableList|) - (fetchdata alist in "ancestors")))) (|updateDatabase| key key systemdir?) ;makes many hashtables??? (|installConstructor| key kind) ;used to be key cname ... (|updateCategoryTable| key kind) diff --git a/src/interp/database.boot b/src/interp/database.boot index da33e22b..f7834c15 100644 --- a/src/interp/database.boot +++ b/src/interp/database.boot @@ -101,10 +101,13 @@ getConstructorKindFromDB ctor == db := constructorDB ctor => dbConstructorKind db nil -getConstructorAncestorsFromDB: %Symbol -> %List %Constructor +getConstructorAncestorsFromDB: %Symbol -> %List %Pair(%Instantiation,%Code) getConstructorAncestorsFromDB ctor == builtinConstructor? ctor => nil -- FIXME: catch at cal sites. - GETDATABASE(ctor,"ANCESTORS") + db := constructorDB ctor + if not dbBeingDefined? db and dbAncestors db isnt [.,:.] then + loadDBIfNecessary db + dbAncestors db ++ return the modemap of the constructor or the instantiation ++ of the constructor `form'. diff --git a/src/interp/define.boot b/src/interp/define.boot index a1c1765f..788e4827 100644 --- a/src/interp/define.boot +++ b/src/interp/define.boot @@ -1176,7 +1176,7 @@ compDefineCategory2(db,form,signature,body,m,e,$formalArgList) == dbConstructorModemap(db) := [[parForm,:parSignature],[buildConstructorCondition db,$op]] dbPrincipals(db) := getParentsFor db - dbAncestors(db) := computeAncestorsOf(db,nil) + dbAncestors(db) := applySubst(pairlis,computeAncestorsOf(db,nil)) dbModemaps(db) := modemapsFromCategory(db,[op',:sargl],formalBody,signature') [fun,$Category,e] |