diff options
-rw-r--r-- | src/ChangeLog | 7 | ||||
-rw-r--r-- | src/interp/daase.lisp | 2 | ||||
-rw-r--r-- | src/interp/g-util.boot | 4 |
3 files changed, 11 insertions, 2 deletions
diff --git a/src/ChangeLog b/src/ChangeLog index 892ccde2..17c7ef0d 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,5 +1,12 @@ 2009-01-04 Gabriel Dos Reis <gdr@cs.tamu.edu> + * interp/daase.lisp (setdatabase): Set superdomain slot too. + * interp/g-util.boot (superType): Handle current domain form. + (maximalSuperType): Tidy. + (noteSubDomainInfo): Call SETDATABASE. + +2009-01-04 Gabriel Dos Reis <gdr@cs.tamu.edu> + * interp/buildom.boot (createEnum): Fix quoting. * interp/compat.boot (system): Likewise. * interp/astr.boot (ncEltQ): Fix declaration. diff --git a/src/interp/daase.lisp b/src/interp/daase.lisp index 551925ee..29cbf446 100644 --- a/src/interp/daase.lisp +++ b/src/interp/daase.lisp @@ -761,6 +761,8 @@ (setf (database-abbreviation struct) value) (when (symbolp value) (setf (get value 'abbreviationfor) constructor))) + (superdomain + (setf (database-superdomain struct) value)) (constructorkind (setf (database-constructorkind struct) value)))))) diff --git a/src/interp/g-util.boot b/src/interp/g-util.boot index 6f2961d8..7889e49f 100644 --- a/src/interp/g-util.boot +++ b/src/interp/g-util.boot @@ -69,6 +69,7 @@ isSharpVarWithNum x == ++ If `dom' is a subdomain, return its immediate super-domain. superType: %Mode -> %Maybe %Mode superType dom == + dom = "$" => superType $functorForm dom isnt [ctor,:args] => nil [super,.] := getSuperDomainFromDB ctor or return nil sublisFormal(args,super,$AtVariables) @@ -78,7 +79,6 @@ superType dom == ++ form `d'. maximalSuperType: %Mode -> %Mode maximalSuperType d == - atom d => d d' := superType d => maximalSuperType d' d @@ -87,7 +87,7 @@ maximalSuperType d == ++ predicate `pred'. noteSubDomainInfo: (%Symbol,%Instantiation,%Form) -> %Thing noteSubDomainInfo(sub,super,pred) == - MAKEPROP(sub,"%SuperDomain",[super,pred]) + SETDATABASE(sub,"SUPERDOMAIN",[super,pred]) ++ Returns non-nil if `d1' is a sub-domain of `d2'. This is the ++ case when `d1' is transitively given by an instance of SubDomain |