X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=tests%2Ftype.pure.lisp;h=3bddb5b99b65de85cdae25370a828f1cb6d13217;hb=b6094d5640a59f36d2f727df08b271c422aa9e1c;hp=5e4b98d2ca7e52d24ce6f6fb6a28e6f29dfd46ea;hpb=4898ef32c639b1c7f4ee13a5ba566ce6debd03e6;p=sbcl.git diff --git a/tests/type.pure.lisp b/tests/type.pure.lisp index 5e4b98d..3bddb5b 100644 --- a/tests/type.pure.lisp +++ b/tests/type.pure.lisp @@ -266,3 +266,26 @@ ACTUAL ~D DERIVED ~D~%" op a b c d minimize brute derived) (assert (= brute derived))))))))))))) + +;;; subtypep on CONS types wasn't taking account of the fact that a +;;; CONS type could be the empty type (but no other non-CONS type) in +;;; disguise. +(multiple-value-bind (yes win) + (subtypep '(and function stream) 'nil) + (multiple-value-bind (cyes cwin) + (subtypep '(cons (and function stream) t) + '(cons nil t)) + (assert (eq yes cyes)) + (assert (eq win cwin)))) + +;;; CONS type subtypep could be too enthusiastic about thinking it was +;;; certain +(multiple-value-bind (yes win) + (subtypep '(satisfies foo) '(satisfies bar)) + (assert (null yes)) + (assert (null win)) + (multiple-value-bind (cyes cwin) + (subtypep '(cons (satisfies foo) t) + '(cons (satisfies bar) t)) + (assert (null cyes)) + (assert (null cwin))))