X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=tests%2Ftype.impure.lisp;h=d5edc2e73410ca7aa92134b5a093714b7efbecaa;hb=22a6702974b7d6ff4e8f2b3b7b5ff446fc632de0;hp=6332549bb91c963640c034029a284f19dac2de95;hpb=4898ef32c639b1c7f4ee13a5ba566ce6debd03e6;p=sbcl.git diff --git a/tests/type.impure.lisp b/tests/type.impure.lisp index 6332549..d5edc2e 100644 --- a/tests/type.impure.lisp +++ b/tests/type.impure.lisp @@ -11,6 +11,7 @@ (load "assertoid.lisp") (use-package "ASSERTOID") +(use-package "TEST-UTIL") (defmacro assert-nil-nil (expr) `(assert (equal '(nil nil) (multiple-value-list ,expr)))) @@ -353,7 +354,6 @@ (mapcar #'find-class '(simple-condition condition sb-pcl::slot-object - sb-kernel:instance t)))) ;; stream classes @@ -371,18 +371,15 @@ 'fundamental-stream)) (mapcar #'find-class '(fundamental-stream standard-object - sb-pcl::std-object sb-pcl::slot-object stream - sb-kernel:instance t)))) (assert (equal (sb-pcl:class-precedence-list (find-class 'fundamental-stream)) (mapcar #'find-class '(fundamental-stream standard-object - sb-pcl::std-object sb-pcl::slot-object stream - sb-kernel:instance t)))) + t)))) (assert (subtypep (find-class 'stream) (find-class t))) (assert (subtypep (find-class 'fundamental-stream) 'stream)) (assert (not (subtypep 'stream 'fundamental-stream))))) @@ -429,5 +426,65 @@ (assert-t-t (subtypep `(not ,t2) `(not ,t1))) (assert-nil-t (subtypep `(not ,t1) `(not ,t2)))) +;;; not easily visible to user code, but this used to be very +;;; confusing. +(with-test (:name (:ctor :typep-function)) + (assert (eval '(typep (sb-pcl::ensure-ctor + (list 'sb-pcl::ctor (gensym)) nil nil) + 'function)))) +(with-test (:name (:ctor :functionp)) + (assert (functionp (sb-pcl::ensure-ctor + (list 'sb-pcl::ctor (gensym)) nil nil)))) + +;;; from PFD ansi-tests +(let ((t1 '(cons (cons (cons (real -744833699 -744833699) cons) + (integer -234496 215373)) + integer)) + (t2 '(cons (cons (cons integer integer) + (integer -234496 215373)) + t))) + (assert (null (values (subtypep `(not ,t2) `(not ,t1)))))) + +(defstruct misc-629a) +(defclass misc-629b () ()) +(defclass misc-629c () () (:metaclass sb-mop:funcallable-standard-class)) + +(assert (typep (make-misc-629a) 'sb-kernel:instance)) +(assert-t-t (subtypep `(member ,(make-misc-629a)) 'sb-kernel:instance)) +(assert-nil-t (subtypep `(and (member ,(make-misc-629a)) sb-kernel:instance) + nil)) +(let ((misc-629a (make-misc-629a))) + (assert-t-t (subtypep `(member ,misc-629a) + `(and (member ,misc-629a) sb-kernel:instance))) + (assert-t-t (subtypep `(and (member ,misc-629a) + sb-kernel:funcallable-instance) + nil))) + +(assert (typep (make-instance 'misc-629b) 'sb-kernel:instance)) +(assert-t-t (subtypep `(member ,(make-instance 'misc-629b)) + 'sb-kernel:instance)) +(assert-nil-t (subtypep `(and (member ,(make-instance 'misc-629b)) + sb-kernel:instance) + nil)) +(let ((misc-629b (make-instance 'misc-629b))) + (assert-t-t (subtypep `(member ,misc-629b) + `(and (member ,misc-629b) sb-kernel:instance))) + (assert-t-t (subtypep `(and (member ,misc-629b) + sb-kernel:funcallable-instance) + nil))) + +(assert (typep (make-instance 'misc-629c) 'sb-kernel:funcallable-instance)) +(assert-t-t (subtypep `(member ,(make-instance 'misc-629c)) + 'sb-kernel:funcallable-instance)) +(assert-nil-t (subtypep `(and (member ,(make-instance 'misc-629c)) + sb-kernel:funcallable-instance) + nil)) +(let ((misc-629c (make-instance 'misc-629c))) + (assert-t-t (subtypep `(member ,misc-629c) + `(and (member ,misc-629c) + sb-kernel:funcallable-instance))) + (assert-t-t (subtypep `(and (member ,misc-629c) + sb-kernel:instance) + nil))) + ;;; success -(quit :unix-status 104)