* bug fix: bogus style-warnings for DEFMETHOD forms that both declared some
required arguments ignored and performed assignments to others.
(lp#898331)
+ * bug fix: *EVALUATOR-MODE* :COMPILE treated (LET () ...) identically
+ to (LOCALLY ...) leading to internally inconsistent toplevel-formness.
changes in sbcl-1.0.54 relative to sbcl-1.0.53:
* minor incompatible changes:
else)
lexenv)))
((let let*)
- (destructuring-bind (definitions &rest body) (rest exp)
- (if (null definitions)
- (simple-eval-locally `(locally ,@body) lexenv)
- (%simple-eval exp lexenv))))
+ (%simple-eval exp lexenv))
(t
(if (and (symbolp name)
(eq (info :function :kind name) :function))
(with-input-from-string (s noise)
(assert (equal "; in: DEFUN SOURCE-CONTEXT-TEST" (read-line s))))))
+(with-test (:name (eval :empty-let-is-not-toplevel))
+ (let ((sb-ext:*evaluator-mode* :compile))
+ (eval `(let ()
+ (defmacro empty-let-is-not-toplevel-x () :macro)
+ (defun empty-let-is-not-toplevel-fun ()
+ (empty-let-is-not-toplevel-x))))
+ (eval `(defun empty-let-is-not-toplevel-x () :fun))
+ (assert (eq :fun (empty-let-is-not-toplevel-fun))))
+ ;; While at it, test that we get the late binding under
+ ;; interpreter mode.
+ (let ((sb-ext:*evaluator-mode* :interpret))
+ (eval `(let ()
+ (defmacro empty-let-is-not-toplevel-x () :macro)
+ (defun empty-let-is-not-toplevel-fun ()
+ (empty-let-is-not-toplevel-x))))
+ (assert (eq :macro (empty-let-is-not-toplevel-fun)))
+ (eval `(defun empty-let-is-not-toplevel-x () :fun))
+ (assert (eq :fun (empty-let-is-not-toplevel-fun)))))
+
;;; success