X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=tests%2Fclos.impure.lisp;h=3fa764a64347ec8a4fa445e68c190a7e4d2bf8ef;hb=66cff1e1319861c080d563359afea284614b3a7f;hp=d9155ef823998292ad88fd8c2ef005e42e484bdd;hpb=81e608991b9f616a412564b26186fa29933d814c;p=sbcl.git diff --git a/tests/clos.impure.lisp b/tests/clos.impure.lisp index d9155ef..3fa764a 100644 --- a/tests/clos.impure.lisp +++ b/tests/clos.impure.lisp @@ -913,6 +913,31 @@ (assert (= (slot-value *yao-super* 'obs) 3)) (assert (= (slot-value *yao-sub* 'obs) 3)) +;;; one more MIO test: variable slot names +(defclass mio () ((x :initform 42))) +(defvar *mio-slot* 'x) +(defparameter *mio-counter* 0) +(defmethod update-instance-for-redefined-class ((instance mio) new old plist &key) + (incf *mio-counter*)) + +(let ((x (make-instance 'mio))) + (make-instances-obsolete 'mio) + (slot-value x *mio-slot*)) + +(let ((x (make-instance 'mio))) + (make-instances-obsolete 'mio) + (setf (slot-value x *mio-slot*) 13)) + +(let ((x (make-instance 'mio))) + (make-instances-obsolete 'mio) + (slot-boundp x *mio-slot*)) + +(let ((x (make-instance 'mio))) + (make-instances-obsolete 'mio) + (slot-makunbound x *mio-slot*)) + +(assert (= 4 *mio-counter*)) + ;;; shared -> local slot transfers of inherited slots, reported by ;;; Bruno Haible (let (i) @@ -1566,5 +1591,11 @@ (assert (eql 13 (setf (slot-value 123 *magic-symbol*) 13))) (assert (eql 13 (slot-value 'foobar *magic-symbol*))) +;;;; Built-in structure and condition layouts should have NIL in +;;;; LAYOUT-FOR-STD-CLASS-P, and classes should have T. + +(assert (not (sb-pcl::layout-for-std-class-p (sb-pcl::find-layout 'warning)))) +(assert (not (sb-pcl::layout-for-std-class-p (sb-pcl::find-layout 'hash-table)))) +(assert (eq t (sb-pcl::layout-for-std-class-p (sb-pcl::find-layout 'standard-object)))) ;;;; success