projects
/
sbcl.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
0.8.16.2: TYPE-ERROR for ERROR
[sbcl.git]
/
src
/
compiler
/
info-functions.lisp
diff --git
a/src/compiler/info-functions.lisp
b/src/compiler/info-functions.lisp
index
18ff9b5
..
5188227
100644
(file)
--- a/
src/compiler/info-functions.lisp
+++ b/
src/compiler/info-functions.lisp
@@
-26,9
+26,7
@@
(defun check-fun-name (name)
(typecase name
(list
(defun check-fun-name (name)
(typecase name
(list
- (unless (and (consp name) (consp (cdr name))
- (null (cddr name)) (eq (car name) 'setf)
- (symbolp (cadr name)))
+ (unless (legal-fun-name-p name)
(compiler-error "illegal function name: ~S" name)))
(symbol
(when (eq (info :function :kind name) :special-form)
(compiler-error "illegal function name: ~S" name)))
(symbol
(when (eq (info :function :kind name) :special-form)
@@
-136,10
+134,17
@@
;; (Note that the following test on INFO catches KEYWORDs as well as
;; explicitly DEFCONSTANT symbols.)
(symbol (eq (info :variable :kind object) :constant))
;; (Note that the following test on INFO catches KEYWORDs as well as
;; explicitly DEFCONSTANT symbols.)
(symbol (eq (info :variable :kind object) :constant))
- (list (eq (car object) 'quote))
+ (list (and (eq (car object) 'quote)
+ (consp (cdr object))))
(t t)))
(t t)))
-(declaim (ftype (function (symbol &optional (or null sb!c::lexenv))) sb!xc:macro-function))
+(defun constant-form-value (form)
+ (typecase form
+ (symbol (info :variable :constant-value form))
+ ((cons (eql quote) cons)
+ (second form))
+ (t form)))
+
(defun sb!xc:macro-function (symbol &optional env)
#!+sb-doc
"If SYMBOL names a macro in ENV, returns the expansion function,
(defun sb!xc:macro-function (symbol &optional env)
#!+sb-doc
"If SYMBOL names a macro in ENV, returns the expansion function,
@@
-204,8
+209,10
@@
(error "can't SETF COMPILER-MACRO-FUNCTION when ENV is non-NIL"))
(when (eq (info :function :kind name) :special-form)
(error "~S names a special form." name))
(error "can't SETF COMPILER-MACRO-FUNCTION when ENV is non-NIL"))
(when (eq (info :function :kind name) :special-form)
(error "~S names a special form." name))
- (setf (info :function :compiler-macro-function name) function)
- function)
+ (with-single-package-locked-error
+ (:symbol name "setting the compiler-macro-function of ~A")
+ (setf (info :function :compiler-macro-function name) function)
+ function))
\f
;;;; a subset of DOCUMENTATION functionality for bootstrapping
\f
;;;; a subset of DOCUMENTATION functionality for bootstrapping
@@
-252,7
+259,7
@@
(typecase x
(structure-class (values (info :type :documentation (class-name x))))
(t (and (typep x 'symbol) (values (info :type :documentation x))))))
(typecase x
(structure-class (values (info :type :documentation (class-name x))))
(t (and (typep x 'symbol) (values (info :type :documentation x))))))
- (setf (info :setf :documentation x))
+ (setf (values (info :setf :documentation x)))
((t)
(typecase x
(function (%fun-doc x))
((t)
(typecase x
(function (%fun-doc x))