(error "Cannot redefine standard type ~S." name))
(:defined
(warn "Redefining DEFTYPE type to be a class: ~S" name)
- (setf (info :type :expander name) nil)))
+ (setf (info :type :expander name) nil
+ (info :type :lambda-list name) nil
+ (info :type :source-location name) nil)))
(remhash name table)
(%note-type-defined name)
(setf (info :type :kind name) :defined)))
(setf (info :type :expander name) expander
(info :type :lambda-list name) lambda-list)
- (when source-location
+ (sb!c:with-source-location (source-location)
(setf (info :type :source-location name) source-location))
(when doc
(setf (fdocumentation name 'type) doc))
(defstruct foo)
(assert (progn (deftype foo () 'integer)
(null (find-class 'foo nil))
- t))
\ No newline at end of file
+ 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)))
;;; checkins which aren't released. (And occasionally for internal
;;; versions, especially for internal versions off the main CVS
;;; branch, it gets hairier, e.g. "0.pre7.14.flaky4.13".)
-"1.0.22.21"
+"1.0.22.22"