X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=tests%2Fmop.impure.lisp;fp=tests%2Fmop.impure.lisp;h=b7af0cf6567a73bd79b8f5734b5ddf2fe1c31422;hb=1e4027886f4ec69649beb4e16797aea6ed8d72f2;hp=e69a1ea6a41ffc1182b3fefa60726552504dfc13;hpb=e7ae7532f1873e2aa657ac51b3aa6a428c019794;p=sbcl.git diff --git a/tests/mop.impure.lisp b/tests/mop.impure.lisp index e69a1ea..b7af0cf 100644 --- a/tests/mop.impure.lisp +++ b/tests/mop.impure.lisp @@ -486,4 +486,18 @@ (defclass foo () ()) (reinitialize-instance (find-class 'foo) :name '(a b)) +;;; classes (including anonymous ones) and eql-specializers should be +;;; allowed to be specializers. +(defvar *anonymous-class* + (make-instance 'standard-class + :direct-superclasses (list (find-class 'standard-object)))) +(defvar *object-of-anonymous-class* + (make-instance *anonymous-class*)) +(eval `(defmethod method-on-anonymous-class ((obj ,*anonymous-class*)) 41)) +(assert (eql (method-on-anonymous-class *object-of-anonymous-class*) 41)) +(eval `(defmethod method-on-anonymous-class + ((obj ,(intern-eql-specializer *object-of-anonymous-class*))) + 42)) +(assert (eql (method-on-anonymous-class *object-of-anonymous-class*) 42)) + ;;;; success