"SWAPPED-ARGS-FUN"
"ANY/TYPE" "EVERY/TYPE"
"TYPE-BOUND-NUMBER"
+ "CONSTANTLY-T" "CONSTANTLY-NIL" "CONSTANTLY-0"
;; ..and macros..
"COLLECT"
,@(let ((def-con (dd-default-constructor defstruct)))
(when (and def-con (not (dd-alternate-metaclass defstruct)))
`((setf (structure-class-constructor (sb!xc:find-class ',name))
- #',def-con))))
- ;; FIXME: MAKE-LOAD-FORM is supposed to be handled here, too.
- ))))
+ #',def-con))))))))
;;; FIXME: I really would like to make structure accessors less special,
;;; just ordinary inline functions. (Or perhaps inline functions with special
;;; compact implementations of their expansions, to avoid bloating the system.)
(if (consp x)
(destructuring-bind (result) x result)
x))
+
+;;; some commonly-occuring CONSTANTLY forms
+(macrolet ((def-constantly-fun (name constant-expr)
+ `(setf (symbol-function ',name)
+ (constantly ,constant-expr))))
+ (def-constantly-fun constantly-t t)
+ (def-constantly-fun constantly-nil nil)
+ (def-constantly-fun constantly-0 0))
\f
;;;; utilities for two-VALUES predicates
(defun fmakunbound (name)
#!+sb-doc
- "Make Name have no global function definition."
+ "Make NAME have no global function definition."
(let ((fdefn (fdefinition-object name nil)))
(when fdefn
(fdefn-makunbound fdefn)))
(setf (info :function :where-from name) :assumed))
(let ((where (info :function :where-from name)))
- (when (eq where :assumed)
+ (when (and (eq where :assumed)
+ ;; In the ordinary target Lisp, it's silly to report
+ ;; undefinedness when the function is defined in the
+ ;; running Lisp. But at cross-compile time, the current
+ ;; definedness of a function is irrelevant to the
+ ;; definedness at runtime, which is what matters.
+ #-sb-xc-host (not (fboundp name)))
(note-undefined-reference name :function))
(make-global-var :kind :global-function
:name name
(when defstruct-p
'(:from-defclass-p t))
other-initargs)))))))
+ ;; FIXME: The way that we do things like (EVAL DEFCLASS-FORM)
+ ;; here is un-ANSI-Common-Lisp-y and leads to problems
+ ;; (like DEFUN for the type predicate being called more than
+ ;; once when we do DEFCLASS at the interpreter prompt),
+ ;; causing bogus style warnings. It would be better to
+ ;; rewrite this so that the macroexpansion looks like e.g.
+ ;; (PROGN
+ ;; (EVAL-WHEN (:COMPILE-TOPLEVEL :LOAD-TOPLEVEL :EXECUTE)
+ ;; (FROB1 ..))
+ ;; (EVAL-WHEN (:LOAD-TOPLEVEL :EXECUTE)
+ ;; (FROB2 ..)))
(if defstruct-p
(progn
(eval defclass-form) ; Define the class now, so that..
;; information around, I'm not sure. -- WHN 2000-12-30
%variable-rebinding))
-;;; FIXME: CONSTANTLY-FOO should be boosted up to SB-INT too.
-(macrolet ((def-constantly-fun (name constant-expr)
- `(setf (symbol-function ',name)
- (constantly ,constant-expr))))
- (def-constantly-fun constantly-t t)
- (def-constantly-fun constantly-nil nil)
- (def-constantly-fun constantly-0 0))
-
;;; FIXME: This looks like SBCL's PARSE-BODY, and should be shared.
(eval-when (:compile-toplevel :load-toplevel :execute)
(defun extract-declarations (body &optional environment)
;;; This is a slightly different way of getting the same symptoms out
;;; of the sbcl-0.6.11.13 byte compiler bug.
(print (setq *print-level* *print-level*))
+
+
+;;; sbcl-0.6.11.25 or so had DEF!STRUCT/MAKE-LOAD-FORM/HOST screwed up
+;;; so that the compiler couldn't dump pathnames.
+(format t "Now the compiler can dump pathnames again: ~S ~S~%" #p"" #p"/x/y/z")
;;; versions, and a string like "0.6.5.12" is used for versions which
;;; aren't released but correspond only to CVS tags or snapshots.
-"0.6.11.27"
+"0.6.11.28"