projects
/
sbcl.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
1.0.22.22: (SETF FIND-CLASSOID) to drop DEFTYPE lambda-lists and source-locations
[sbcl.git]
/
src
/
compiler
/
compiler-deftype.lisp
diff --git
a/src/compiler/compiler-deftype.lisp
b/src/compiler/compiler-deftype.lisp
index
2a1ddce
..
6427570
100644
(file)
--- a/
src/compiler/compiler-deftype.lisp
+++ b/
src/compiler/compiler-deftype.lisp
@@
-13,15
+13,18
@@
(/show0 "compiler-deftype.lisp 14")
(/show0 "compiler-deftype.lisp 14")
-(defun %compiler-deftype (name expander &optional doc)
+(defun %compiler-deftype (name lambda-list expander doc source-location)
+ (with-single-package-locked-error
+ (:symbol name "defining ~A as a type specifier"))
(ecase (info :type :kind name)
(:primitive
(when *type-system-initialized*
(error "illegal to redefine standard type: ~S" name)))
(:instance
(warn "The class ~S is being redefined to be a DEFTYPE." name)
(ecase (info :type :kind name)
(:primitive
(when *type-system-initialized*
(error "illegal to redefine standard type: ~S" name)))
(:instance
(warn "The class ~S is being redefined to be a DEFTYPE." name)
- (undefine-structure (layout-info (classoid-layout (find-classoid name))))
- (setf (classoid-cell-classoid (find-classoid-cell name)) nil)
+ (undeclare-structure (find-classoid name) t)
+ ;; FIXME: shouldn't this happen only at eval-time?
+ (setf (classoid-cell-classoid (find-classoid-cell name :create t)) nil)
(setf (info :type :compiler-layout name) nil)
(setf (info :type :kind name) :defined))
(:defined
(setf (info :type :compiler-layout name) nil)
(setf (info :type :kind name) :defined))
(:defined
@@
-38,7
+41,10
@@
)
((nil :forthcoming-defclass-type)
(setf (info :type :kind name) :defined)))
)
((nil :forthcoming-defclass-type)
(setf (info :type :kind name) :defined)))
- (setf (info :type :expander name) expander)
+ (setf (info :type :expander name) expander
+ (info :type :lambda-list name) lambda-list)
+ (sb!c:with-source-location (source-location)
+ (setf (info :type :source-location name) source-location))
(when doc
(setf (fdocumentation name 'type) doc))
;; ### Bootstrap hack -- we need to define types before %NOTE-TYPE-DEFINED
(when doc
(setf (fdocumentation name 'type) doc))
;; ### Bootstrap hack -- we need to define types before %NOTE-TYPE-DEFINED