From: Christophe Rhodes Date: Mon, 31 Mar 2003 12:19:25 +0000 (+0000) Subject: 0.pre8.19: X-Git-Url: http://repo.macrolet.net/gitweb/?a=commitdiff_plain;h=abbf4da893fae087978fcdf544c85187ea9c2a9d;p=sbcl.git 0.pre8.19: Export those classes which are present in our implementation of the MOP from SB-MOP ... also document absence of METAOBJECT and disjointness of STANDARD-OBJECT and FUNCALLABLE-STANDARD-OBJECT --- diff --git a/doc/beyond-ansi.sgml b/doc/beyond-ansi.sgml index 1990336..b1c0a39 100644 --- a/doc/beyond-ansi.sgml +++ b/doc/beyond-ansi.sgml @@ -118,12 +118,21 @@ whose instances can be used as Lisp streams (e.g. passed as the first argument to format). &SBCL; supports a MetaObject Protocol which is intended to be -compatible with &AMOP;; exceptions to this (as distinct from current -bugs) are that -compute-effective-method only returns one value, not -two. +compatible with &AMOP;; present exceptions to this (as distinct from +current bugs) are: + + the abstract metaobject class is not + present in the class hierarchy; + the standard-object and + funcallable-standard-object classes are + disjoint; + compute-effective-method only returns + one value, not two; + the system-supplied :around method for + compute-slots specialized on + funcallable-standard-class does not respect the + requested order from a user-supplied primary method. + diff --git a/package-data-list.lisp-expr b/package-data-list.lisp-expr index 853a3f1..2d865d3 100644 --- a/package-data-list.lisp-expr +++ b/package-data-list.lisp-expr @@ -1409,13 +1409,15 @@ is a good idea, but see SB-SYS re. blurring of boundaries." :doc "public: the MetaObject Protocol interface, as defined by The Art of the Metaobject Protocol, by Kiczales, des Rivieres and Bobrow: -ISBN 0-262-61074-4." - :use ("SB!PCL") +ISBN 0-262-61074-4, with exceptions as noted in the User Manual." + :use ("CL" "SB!PCL") :reexport ("ADD-DEPENDENT" "ADD-DIRECT-METHOD" "ADD-DIRECT-SUBCLASS" "ADD-METHOD" "ALLOCATE-INSTANCE" + "BUILT-IN-CLASS" + "CLASS" "CLASS-DEFAULT-INITARGS" "CLASS-DIRECT-DEFAULT-INITARGS" "CLASS-DIRECT-SLOTS" @@ -1434,18 +1436,26 @@ ISBN 0-262-61074-4." "COMPUTE-EFFECTIVE-METHOD" "COMPUTE-EFFECTIVE-SLOT-DEFINITION" "COMPUTE-SLOTS" + "DIRECT-SLOT-DEFINITION" "DIRECT-SLOT-DEFINITION-CLASS" + "EFFECTIVE-SLOT-DEFINITION" "EFFECTIVE-SLOT-DEFINITION-CLASS" "ENSURE-CLASS" "ENSURE-CLASS-USING-CLASS" "ENSURE-GENERIC-FUNCTION" "ENSURE-GENERIC-FUNCTION-USING-CLASS" + "EQL-SPECIALIZER" "EQL-SPECIALIZER-OBJECT" "EXTRACT-LAMBDA-LIST" "EXTRACT-SPECIALIZER-NAMES" "FINALIZE-INHERITANCE" "FIND-METHOD-COMBINATION" + "FORWARD-REFERENCED-CLASS" + "FUNCALLABLE-STANDARD-CLASS" "FUNCALLABLE-STANDARD-INSTANCE-ACCESS" + "FUNCALLABLE-STANDARD-OBJECT" + "FUNCTION" + "GENERIC-FUNCTION" "GENERIC-FUNCTION-ARGUMENT-PRECEDENCE-ORDER" "GENERIC-FUNCTION-DECLARATIONS" "GENERIC-FUNCTION-LAMBDA-LIST" @@ -1457,6 +1467,10 @@ ISBN 0-262-61074-4." "MAKE-METHOD-LAMBDA" "MAKE-INSTANCE" "MAP-DEPENDENTS" + ;; KLUDGE: See the User Manual + ;; "METAOBJECT" + "METHOD" + "METHOD-COMBINATION" "METHOD-FUNCTION" "METHOD-GENERIC-FUNCTION" "METHOD-LAMBDA-LIST" @@ -1470,6 +1484,7 @@ ISBN 0-262-61074-4." "REMOVE-METHOD" "SET-FUNCALLABLE-INSTANCE-FUNCTION" "SLOT-BOUNDP-USING-CLASS" + "SLOT-DEFINITION" "SLOT-DEFINITION-ALLOCATION" "SLOT-DEFINITION-INITARGS" "SLOT-DEFINITION-INITFORM" @@ -1481,9 +1496,21 @@ ISBN 0-262-61074-4." "SLOT-DEFINITION-TYPE" "SLOT-MAKUNBOUND-USING-CLASS" "SLOT-VALUE-USING-CLASS" + "SPECIALIZER" "SPECIALIZER-DIRECT-GENERIC-FUNCTIONS" "SPECIALIZER-DIRECT-METHODS" + "STANDARD-ACCESSOR-METHOD" + "STANDARD-CLASS" + "STANDARD-DIRECT-SLOT-DEFINITION" + "STANDARD-EFFECTIVE-SLOT-DEFINITION" + "STANDARD-GENERIC-FUNCTION" "STANDARD-INSTANCE-ACCESS" + "STANDARD-METHOD" + "STANDARD-OBJECT" + "STANDARD-READER-METHOD" + "STANDARD-SLOT-DEFINITION" + "STANDARD-WRITER-METHOD" + "T" "UPDATE-DEPENDENT" "VALIDATE-SUPERCLASS" "WRITER-METHOD-CLASS")) @@ -1496,6 +1523,9 @@ extensions, but even they are not guaranteed to be present in later versions of SBCL, and the other stuff in here is definitely not guaranteed to be present in later versions of SBCL." :use ("CL" "SB!INT" "SB!EXT" "SB!WALKER" "SB!KERNEL") + ;; FIXME: After a little while, these reexports can probably go + ;; away, as they're superseded by the use of SB-MOP as the + ;; publically-accessible package. :reexport ("ADD-METHOD" "ALLOCATE-INSTANCE" "CLASS-NAME" "COMPUTE-APPLICABLE-METHODS" "ENSURE-GENERIC-FUNCTION" "MAKE-INSTANCE" @@ -1519,17 +1549,23 @@ definitely not guaranteed to be present in later versions of SBCL." "COMPUTE-EFFECTIVE-METHOD" "COMPUTE-EFFECTIVE-SLOT-DEFINITION" "COMPUTE-SLOTS" + "DIRECT-SLOT-DEFINITION" "DIRECT-SLOT-DEFINITION-CLASS" + "EFFECTIVE-SLOT-DEFINITION" "EFFECTIVE-SLOT-DEFINITION-CLASS" "ENSURE-CLASS" "ENSURE-CLASS-USING-CLASS" "ENSURE-GENERIC-FUNCTION-USING-CLASS" + "EQL-SPECIALIZER" "EQL-SPECIALIZER-OBJECT" "EXTRACT-LAMBDA-LIST" "EXTRACT-SPECIALIZER-NAMES" "FINALIZE-INHERITANCE" "FIND-METHOD-COMBINATION" + "FORWARD-REFERENCED-CLASS" + "FUNCALLABLE-STANDARD-CLASS" "FUNCALLABLE-STANDARD-INSTANCE-ACCESS" + "FUNCALLABLE-STANDARD-OBJECT" "GENERIC-FUNCTION-ARGUMENT-PRECEDENCE-ORDER" "GENERIC-FUNCTION-DECLARATIONS" "GENERIC-FUNCTION-LAMBDA-LIST" @@ -1551,6 +1587,7 @@ definitely not guaranteed to be present in later versions of SBCL." "REMOVE-DIRECT-SUBCLASS" "SET-FUNCALLABLE-INSTANCE-FUNCTION" "SLOT-BOUNDP-USING-CLASS" + "SLOT-DEFINITION" "SLOT-DEFINITION-ALLOCATION" "SLOT-DEFINITION-INITARGS" "SLOT-DEFINITION-INITFORM" @@ -1562,9 +1599,16 @@ definitely not guaranteed to be present in later versions of SBCL." "SLOT-DEFINITION-TYPE" "SLOT-MAKUNBOUND-USING-CLASS" "SLOT-VALUE-USING-CLASS" + "SPECIALIZER" "SPECIALIZER-DIRECT-GENERIC-FUNCTIONS" "SPECIALIZER-DIRECT-METHODS" + "STANDARD-ACCESSOR-METHOD" + "STANDARD-DIRECT-SLOT-DEFINITION" + "STANDARD-EFFECTIVE-SLOT-DEFINITION" "STANDARD-INSTANCE-ACCESS" + "STANDARD-READER-METHOD" + "STANDARD-SLOT-DEFINITION" + "STANDARD-WRITER-METHOD" "UPDATE-DEPENDENT" "VALIDATE-SUPERCLASS" "WRITER-METHOD-CLASS")) diff --git a/tests/mop.impure.lisp b/tests/mop.impure.lisp index e446bff..b70ca1a 100644 --- a/tests/mop.impure.lisp +++ b/tests/mop.impure.lisp @@ -89,7 +89,7 @@ ;;; that it is at least possible to define classes with that as a ;;; metaclass. (defclass gf-class (standard-generic-function) () - (:metaclass sb-pcl::funcallable-standard-class)) + (:metaclass funcallable-standard-class)) (defgeneric g (a b c) (:generic-function-class gf-class)) @@ -109,15 +109,15 @@ ;;; of all built-in-classes is of the relevant type) (assert (null (class-prototype (find-class 'null)))) -;;; simple consistency checks for the SB-PCL (perhaps AKA SB-MOP) -;;; package: all of the functionality specified in AMOP is in -;;; functions: -(assert (null (loop for x being each external-symbol in "SB-PCL" - unless (fboundp x) collect x))) -;;; and all generic functions in SB-PCL have at least one specified +;;; simple consistency checks for the SB-MOP package: all of the +;;; functionality specified in AMOP is in functions and classes: +(assert (null (loop for x being each external-symbol in "SB-MOP" + unless (or (fboundp x) (find-class x)) collect x))) +;;; and all generic functions in SB-MOP have at least one specified ;;; method, except for UPDATE-DEPENDENT -(assert (null (loop for x being each external-symbol in "SB-PCL" - unless (or (eq x 'update-dependent) +(assert (null (loop for x being each external-symbol in "SB-MOP" + unless (or (not (fboundp x)) + (eq x 'update-dependent) (not (typep (fdefinition x) 'generic-function)) (> (length (generic-function-methods (fdefinition x))) diff --git a/version.lisp-expr b/version.lisp-expr index 8c2cf77..8ffbf43 100644 --- a/version.lisp-expr +++ b/version.lisp-expr @@ -18,4 +18,4 @@ ;;; versions, especially for internal versions off the main CVS ;;; branch, it gets hairier, e.g. "0.pre7.14.flaky4.13".) -"0.pre8.18" +"0.pre8.19"