Fix make-array transforms.
[sbcl.git] / tests / deftype.impure.lisp
index 373f6d4..3432997 100644 (file)
 (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)))))