X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=tests%2Fdeftype.impure.lisp;h=3432997cd85149120b4013b2cf470ecda572bda6;hb=cf49f2d086069a9c1b57f501df9a6a0bd3a34c3c;hp=b1eef79a2ff82317d8a5eaa6e3bcdbe4398761c9;hpb=cca6915901ef29ada74859eefa147f6ea553fe4e;p=sbcl.git diff --git a/tests/deftype.impure.lisp b/tests/deftype.impure.lisp index b1eef79..3432997 100644 --- a/tests/deftype.impure.lisp +++ b/tests/deftype.impure.lisp @@ -4,7 +4,7 @@ ;;;; While most of SBCL is derived from the CMU CL system, the test ;;;; files (like this one) were written from scratch after the fork ;;;; from CMU CL. -;;;; +;;;; ;;;; This software is in the public domain and is provided with ;;;; absolutely no warranty. See the COPYING and CREDITS files for ;;;; more information. @@ -27,4 +27,28 @@ (assert (typep 1 'key)) (assert (typep 1 'key-singleton)) -(quit :unix-status 104) +;;; empty body +(deftype deftype-with-empty-body ()) +(assert (subtypep 'deftype-with-empty-body nil)) +(assert (subtypep nil 'deftype-with-empty-body)) + +;; Ensure that DEFTYPE can successfully replace a DEFSTRUCT type +;; definition. +(defstruct foo) +(assert (progn (deftype foo () 'integer) + (null (find-class 'foo nil)) + t)) + +;; Ensure that DEFCLASS after DEFTYPE nukes the lambda-list. +(deftype bar (x) `(integer ,x)) +(assert (equal '(x) (sb-int:info :type :lambda-list 'bar))) +(defclass bar () ()) +(assert (not (sb-int:info :type :lambda-list 'bar))) + +;; Need to work with plain symbols as the body. +(defconstant whatever 't) +(deftype anything () whatever) +(assert (typep 42 'anything)) + +(with-test (:name :deftype-not-list-lambda-list) + (assert (raises-error? (eval `(deftype ,(gensym) non-list-argument)))))