;;; We parse declarations and then recursively process the body.
(defun process-toplevel-locally (body path compile-time-too)
(declare (list path))
- (multiple-value-bind (forms decls) (sb!sys:parse-body body nil)
+ (multiple-value-bind (forms decls) (parse-body body nil)
(let* ((*lexenv*
(process-decls decls nil nil (make-continuation)))
;; Binding *POLICY* is pretty much of a hack, since it
;; nice default for things where we don't have a
;; real source path (as in e.g. inside CL:COMPILE).
'(original-source-start 0 0)))
- (unless (or (null name) (legal-fun-name-p name))
- (error "not a legal function name: ~S" name))
+ (when name
+ (legal-fun-name-or-type-error name))
(let* ((*lexenv* (make-lexenv :policy *policy*))
(fun (make-functional-from-toplevel-lambda lambda-expression
:name name
(gethash (leaf-info fun) entry-table)
(aver found-p)
result))
+ ;; KLUDGE: This code duplicates some other code in this
+ ;; file. In the great reorganzation, the flow of program logic
+ ;; changed from the original CMUCL model, and that path (as of
+ ;; sbcl-0.7.5 in SUB-COMPILE-FILE) was no longer followed for
+ ;; CORE-OBJECTS, leading to BUG 156. This place is
+ ;; transparently not the right one for this code, but I don't
+ ;; have a clear enough overview of the compiler to know how to
+ ;; rearrange it all so that this operation fits in nicely, and
+ ;; it was blocking reimplementation of
+ ;; (DECLAIM (INLINE FOO)) (MACROLET ((..)) (DEFUN FOO ...))
+ ;;
+ ;; FIXME: This KLUDGE doesn't solve all the problem in an
+ ;; ideal way, as (1) definitions typed in at the REPL without
+ ;; an INLINE declaration will give a NULL
+ ;; FUNCTION-LAMBDA-EXPRESSION (allowable, but not ideal) and
+ ;; (2) INLINE declarations will yield a
+ ;; FUNCTION-LAMBDA-EXPRESSION headed by
+ ;; SB-C:LAMBDA-WITH-LEXENV, even for null LEXENV.
+ ;;
+ ;; CSR, 2002-07-02
+ (when (core-object-p *compile-object*)
+ (fix-core-source-info *source-info* *compile-object*))
+
(mapc #'clear-ir1-info components-from-dfo)
(clear-stuff)))))
(defun process-toplevel-cold-fset (name lambda-expression path)
(unless (producing-fasl-file)
(error "can't COLD-FSET except in a fasl file"))
- (unless (legal-fun-name-p name)
- (error "not a legal function name: ~S" name))
+ (legal-fun-name-or-type-error name)
(fasl-dump-cold-fset name
(%compile lambda-expression
*compile-object*
(*compiler-error-bailout*
(lambda ()
(convert-and-maybe-compile
- `(error "execution of a form compiled with errors:~% ~S"
- ',form)
+ `(error 'simple-program-error
+ :format-control "execution of a form compiled with errors:~% ~S"
+ :format-arguments (list ',form))
path)
(throw 'process-toplevel-form-error-abort nil))))
(node-component (lambda-bind x)))
:toplevel)))
lambdas
- :start start)
+ ;; this used to read ":start start", but
+ ;; start can be greater than len, which
+ ;; is an error according to ANSI - CSR,
+ ;; 2002-04-25
+ :start (min start len))
len)))
(do* ((start 0 (1+ loser))
(loser (loser start) (loser start)))
#!+sb-doc
"Return a pathname describing what file COMPILE-FILE would write to given
these arguments."
- (pathname output-file))
+ (merge-pathnames output-file (merge-pathnames input-file)))
\f
;;;; MAKE-LOAD-FORM stuff
;;; If the constant doesn't show up in *CONSTANTS-BEING-CREATED*, then
;;; we have to create it. We call MAKE-LOAD-FORM and check to see
;;; whether the creation form is the magic value
-;;; :JUST-DUMP-IT-NORMALLY. If it is, then we don't do anything. The
+;;; :SB-JUST-DUMP-IT-NORMALLY. If it is, then we don't do anything. The
;;; dumper will eventually get its hands on the object and use the
;;; normal structure dumping noise on it.
;;;
constant
condition)))
(case creation-form
- (:just-dump-it-normally
+ (:sb-just-dump-it-normally
(fasl-validate-structure constant *compile-object*)
t)
(:ignore-it