X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=tests%2Ftype.impure.lisp;h=b5e981f76f7a4881c8e5927bec43940c2a380b3f;hb=8fe977ca5d0d068f2641dd06d3743a4c218d5cc1;hp=5e6540af4b1e6301f91204a665582ebc9ad7237d;hpb=d052cf55544eb8c251146457d9245e8610e0a8f2;p=sbcl.git diff --git a/tests/type.impure.lisp b/tests/type.impure.lisp index 5e6540a..b5e981f 100644 --- a/tests/type.impure.lisp +++ b/tests/type.impure.lisp @@ -430,11 +430,17 @@ ;;; confusing. (with-test (:name (:ctor :typep-function)) (assert (eval '(typep (sb-pcl::ensure-ctor - (list 'sb-pcl::ctor (gensym)) nil nil) + (list 'sb-pcl::ctor (gensym)) nil nil nil) 'function)))) (with-test (:name (:ctor :functionp)) (assert (functionp (sb-pcl::ensure-ctor - (list 'sb-pcl::ctor (gensym)) nil nil)))) + (list 'sb-pcl::ctor (gensym)) nil nil nil)))) +;;; some new (2008-10-03) ways of going wrong... +(with-test (:name (:ctor-allocate-instance :typep-function)) + (assert (eval '(typep (allocate-instance (find-class 'sb-pcl::ctor)) + 'function)))) +(with-test (:name (:ctor-allocate-instance :functionp)) + (assert (functionp (allocate-instance (find-class 'sb-pcl::ctor))))) ;;; from PFD ansi-tests (let ((t1 '(cons (cons (cons (real -744833699 -744833699) cons) @@ -551,4 +557,34 @@ (assert-t-t (subtypep '(or fixnum simple-string end-of-file parse-error fixnum vector) '(or fixnum vector end-of-file parse-error fixnum simple-string))) + +#+sb-eval +(assert-t-t + (subtypep '(and function (not compiled-function) + (not sb-eval:interpreted-function)) + nil)) + +;;; weakening of union type checks +(defun weaken-union-1 (x) + (declare (optimize speed)) + (car x)) +(multiple-value-bind (res err) + (ignore-errors (weaken-union-1 "askdjhasdkj")) + (assert (not res)) + (assert (typep err 'type-error))) +(defun weaken-union-2 (x) + (declare (optimize speed) + (type (or cons fixnum) x)) + (etypecase x + (fixnum x) + (cons + (setf (car x) 3) + x))) +(multiple-value-bind (res err) + (ignore-errors (weaken-union-2 "asdkahsdkhj")) + (assert (not res)) + (assert (typep err 'type-error)) + (assert (or (equal '(or cons fixnum) (type-error-expected-type err)) + (equal '(or fixnum cons) (type-error-expected-type err))))) + ;;; success