Commit 76756199 authored by Pascal Costanza's avatar Pascal Costanza
Browse files

Added support for Clozure Common Lisp.

darcs-hash:8bb7ec5d117c71f451f2c2737ff9772ae41c2dc6
parent 22d6f08b
......@@ -32,7 +32,7 @@ OTHER DEALINGS IN THE SOFTWARE.
#+clisp "clisp"
#+ecl "ecl"
#+lispworks "lispworks"
#+(or mcl openmcl) "mcl"
#+(or clozure-common-lisp openmcl mcl) "mcl"
#+(or cmu sbcl) "pcl"
:components ((:file "closer-mop-packages")
(:file "closer-mop"
......@@ -42,5 +42,5 @@ OTHER DEALINGS IN THE SOFTWARE.
#+clisp "clisp"
#+ecl "ecl"
#+lispworks "lispworks"
#+(or mcl openmcl) "mcl"
#+(or clozure-common-lisp openmcl mcl) "mcl"
#+(or cmu sbcl) "pcl"))))
......@@ -48,7 +48,44 @@
(:remove-method-calls-compute-discriminating-function)
(:subclasses-of-method-combination-do-not-inherit-exported-slots))
:cmu19d
:clozure-common-lisp1.1-r7809
((:compute-applicable-methods-using-classes)
(:defmethod-calls-generic-function-method-class)
(:defmethod-calls-make-method-lambda)
(:discriminating-functions-can-be-closures)
(:discriminating-functions-can-be-funcalled)
(:function-invocation-calls-compute-applicable-methods)
(:function-invocation-calls-compute-applicable-methods-using-classes)
(:function-invocation-calls-compute-effective-method)
(:make-method-lambda)
(:method-functions-take-processed-parameters)
(:method-lambdas-are-processed)
(:reinitialize-lambda-list-reinitializes-argument-precedence-order)
; ---
(:add-method-calls-compute-discriminating-function fixed)
(:compute-slots-requested-slot-order-honoured)
(:eql-specializer fixed)
(:generic-functions-can-be-empty fixed)
(:initialize-instance-calls-compute-discriminating-function fixed)
(:reinitialize-instance-calls-compute-discriminating-function fixed)
(:reinitialize-instance-calls-finalize-inheritance)
(:remove-method-calls-compute-discriminating-function fixed)
(:slot-definition-documentation fixed)
(:subclasses-of-direct-slot-definition-do-not-inherit-exported-slots)
(:subclasses-of-effective-slot-definition-do-not-inherit-exported-slots)
(:subclasses-of-generic-function-do-not-inherit-exported-slots)
(:subclasses-of-slot-definition-do-not-inherit-exported-slots)
(:subclasses-of-standard-accessor-method-do-not-inherit-exported-slot)
(:subclasses-of-standard-direct-slot-definition-do-not-inherit-exported-slots)
(:subclasses-of-standard-effective-slot-definition-do-not-inherit-exported-slots)
(:subclasses-of-standard-generic-function-do-not-inherit-exported-slots)
(:subclasses-of-standard-method-do-not-inherit-exported-slots)
(:subclasses-of-standard-reader-method-do-not-inherit-exported-slots)
(:subclasses-of-standard-slot-definition-do-not-inherit-exported-slots)
(:subclasses-of-standard-accessor-method-do-not-inherit-exported-slots)
(:subclasses-of-standard-writer-method-do-not-inherit-exported-slots))
:cmu19e-pre2
((:accessor-method-initialized-with-function fixed)
(:accessor-method-initialized-with-lambda-list fixed)
(:accessor-method-initialized-with-slot-definition fixed)
......
......@@ -32,7 +32,17 @@ None of the incompatibilities in CLisp are fixed.
- MAKE-METHOD-LAMBDA is not provided.
- Subclasses of METHOD-COMBINATION will inherit slots whose names are exported symbols and/or accessible in the package common-lisp-user. Not fixed.
CMUCL 19d
Clozure Common Lisp 1.1-r7809
In OpenMCL, generic functions work completely differently than specified. The specific incompatibilities are not listed and are not fixed. However, there is now experimental support for compute-discriminating-function, which will automatically be called and whose result will be installed on initialize-instance, reinitialize-instance, add-method and remove-method.
- The slot order requested by a primary method for COMPUTE-SLOTS is not honoured by this MOP. Not fixed.
- EQL-SPECIALIZER is not exported. Fixed.
- DOCUMENTATION doesn't return the documentation strings for slot definition metaobjects. Fixed.
- REINITIALIZE-INSTANCE of a class metaobject doesn't invoke FINALIZE-INHERITANCE again. Not fixed.
- Subclasses of DIRECT-SLOT-DEFINITION, EFFECTIVE-SLOT-DEFINITION, GENERIC-FUNCTION, SLOT-DEFINITION, STANDARD-ACCESSOR-METHOD, STANDARD-DIRECT-SLOT-DEFINITION, STANDARD-EFFECTIVE-SLOT-DEFINITION, STANDARD-GENERIC-FUNCTION, STANDARD-METHOD, STANDARD-READER-METHOD, STANDARD-SLOT-DEFINITION and STANDARD-WRITER-METHOD will inherit slots whose names are exported symbols and/or accessible in the package common-lisp-user. Not fixed.
CMUCL 19e-pre2
- CLASS-DIRECT-DEFAULT-INITARGS and CLASS-DEFAULT-INITARGS don't return canonicalized default initargs as specified. Not fixed.
- Accessor methods are not initialized with :function, :lambda-list, :slot-definition and :specializers. Fixed.
......
......@@ -4,9 +4,9 @@
(:use #:common-lisp)
(:nicknames #:c2mop)
#-openmcl
#-(or clozure-common-lisp openmcl)
(:shadow #:defclass #:standard-class #:typep #:subtypep)
#-openmcl
#-(or clozure-common-lisp openmcl)
(:export #:defclass #:standard-class #:typep #:subtypep)
(:import-from #:ccl
......@@ -40,10 +40,10 @@
#:class-precedence-list
#:class-prototype
#:class-slots
#-(or mcl openmcl) #:compute-applicable-methods-using-classes
#-(or clozure-common-lisp openmcl mcl) #:compute-applicable-methods-using-classes
#:compute-class-precedence-list
#:compute-default-initargs
#:compute-discriminating-function
#-(or clozure-common-lisp openmcl) #:compute-discriminating-function
#:compute-effective-method
#:compute-effective-slot-definition
#:compute-slots
......@@ -66,7 +66,7 @@
#:generic-function-methods
#:generic-function-name
#:intern-eql-specializer
#-(or mcl openmcl) #:make-method-lambda
#-(or clozure-common-lisp openmcl mcl) #:make-method-lambda
#:map-dependents
#:method-function
#:method-generic-function
......@@ -76,7 +76,7 @@
#:remove-dependent
#:remove-direct-method
#:remove-direct-subclass
#+openmcl #:set-funcallable-instance-function
#+(or clozure-common-lisp openmcl) #:set-funcallable-instance-function
#:slot-boundp-using-class
#:slot-definition-allocation
#:slot-definition-initargs
......@@ -131,7 +131,7 @@
#:class-precedence-list
#:class-prototype
#:class-slots
#-(or mcl openmcl) #:compute-applicable-methods-using-classes
#-(or clozure-common-lisp openmcl mcl) #:compute-applicable-methods-using-classes
#:compute-class-precedence-list
#:compute-default-initargs
#:compute-discriminating-function
......@@ -157,7 +157,7 @@
#:generic-function-methods
#:generic-function-name
#:intern-eql-specializer
#-(or mcl openmcl) #:make-method-lambda
#-(or clozure-common-lisp openmcl mcl) #:make-method-lambda
#:map-dependents
#:method-function
#:method-generic-function
......@@ -167,7 +167,7 @@
#:remove-dependent
#:remove-direct-method
#:remove-direct-subclass
#+openmcl #:set-funcallable-instance-function
#+(or clozure-common-lisp openmcl) #:set-funcallable-instance-function
#:slot-boundp-using-class
#:slot-definition-allocation
#:slot-definition-initargs
......@@ -183,8 +183,8 @@
#:specializer-direct-generic-functions
#:specializer-direct-methods
#:standard-instance-access
#-openmcl #:subtypep
#-openmcl #:typep
#-(or clozure-common-lisp openmcl) #:subtypep
#-(or clozure-common-lisp openmcl) #:typep
#:update-dependent
#:validate-superclass
#:writer-method-class))
......@@ -2,7 +2,7 @@
;; Some internal utility functions.
#-openmcl
#-(or clozure-common-lisp openmcl)
(define-modify-macro nconcf (&rest lists) nconc)
;; Some utility functions.
......@@ -19,7 +19,7 @@
(when errorp (error "~S is not a class." class)))
class)
#-openmcl
#-(or clozure-common-lisp openmcl)
(progn
;; We need a new standard-class for various things.
......@@ -133,9 +133,9 @@
finally (return (nconc args rest)))
,@(cddr lambda-expression))))
;; The following ensures that slot definitions have a documentation in OpenMCL.
;; The following ensures that slot definitions have a documentation in Clozure CL and OpenMCL.
#+openmcl
#+(or clozure-common-lisp openmcl)
(defmethod initialize-instance :after ((slot slot-definition) &key documentation)
(setf (documentation slot 't) documentation))
......@@ -156,8 +156,8 @@
:readers :writers))
(defun fix-slot-initargs (initargs)
#+openmcl initargs
#-openmcl
#+(or clozure-common-lisp openmcl) initargs
#-(or clozure-common-lisp openmcl)
(let* ((counts (loop with counts
for (key nil) on initargs by #'cddr
do (incf (getf counts key 0))
......
Allegro 8.1
CLisp 2.44.1
CMU Common Lisp 19d
LispWorks 5.0 - 5.0.2, 5.1, Professional Edition
Macintosh Common Lisp 5.1
OpenMCL 1.0
Clozure Common Lisp 1.1-r7809
CMU Common Lisp 19e-pre2
LispWorks 5.1 Professional Edition
SBCL 1.0.15
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment