X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;ds=sidebyside;f=tests%2Fclos.impure.lisp;h=14787f56967a117b1eaeccd3e2f841a626aca2eb;hb=d76c81b0ca4dcfc99f0cd805f5c20493fa80b2b6;hp=22dc62bef281b682687b570492449f0767b5010a;hpb=ef1534f00fcf9d5554a91c70485b4ede40fdcb4f;p=sbcl.git diff --git a/tests/clos.impure.lisp b/tests/clos.impure.lisp index 22dc62b..14787f5 100644 --- a/tests/clos.impure.lisp +++ b/tests/clos.impure.lisp @@ -588,5 +588,25 @@ (assert (= (something-that-specializes (make-instance 'other-name-for-class)) 2)) +;;; more forward referenced classes stuff +(defclass frc-1 (frc-2) ()) +(assert (subtypep 'frc-1 (find-class 'frc-2))) +(assert (subtypep (find-class 'frc-1) 'frc-2)) +(assert (not (subtypep (find-class 'frc-2) 'frc-1))) +(defclass frc-2 (frc-3) ((a :initarg :a))) +(assert (subtypep 'frc-1 (find-class 'frc-3))) +(defclass frc-3 () ()) +(assert (typep (make-instance 'frc-1 :a 2) (find-class 'frc-1))) +(assert (typep (make-instance 'frc-2 :a 3) (find-class 'frc-2))) + +;;; check that we can define classes with two slots of different names +;;; (even if it STYLE-WARNs). +(defclass odd-name-class () + ((name :initarg :name) + (cl-user::name :initarg :name2))) +(let ((x (make-instance 'odd-name-class :name 1 :name2 2))) + (assert (= (slot-value x 'name) 1)) + (assert (= (slot-value x 'cl-user::name) 2))) + ;;;; success (sb-ext:quit :unix-status 104)