0.8.21.12: compiler message fixes
[sbcl.git] / src / code / eval.lisp
index 7b3764e..70bd2ea 100644 (file)
@@ -77,7 +77,8 @@
   #!+sb-doc
   "Evaluate the argument in a null lexical environment, returning the
   result or results."
-  (eval-in-lexenv original-exp (make-null-lexenv)))
+  (with-compilation-unit ()
+    (eval-in-lexenv original-exp (make-null-lexenv))))
 
 ;;; Pick off a few easy cases, and the various top level EVAL-WHEN
 ;;; magical cases, and call %EVAL for the rest.
                (if (and (legal-fun-name-p name)
                         (not (consp (let ((sb!c:*lexenv* lexenv))
                                       (sb!c:lexenv-find name funs)))))
-                   (fdefinition name)
+                   (%coerce-name-to-fun name)
                    (%eval original-exp lexenv))))
             ((quote)
              (unless (= n-args 1)
                         ((null (cddr args))
                          ;; We duplicate the call to SET so that the
                          ;; correct value gets returned.
-                         (set (first args) (eval (second args))))
-                      (set (first args) (eval (second args)))))
+                         (set (first args) (eval-in-lexenv (second args) lexenv)))
+                      (set (first args) (eval-in-lexenv (second args) lexenv))))
                  (let ((symbol (first name)))
                    (case (info :variable :kind symbol)
                      (:special)
 (defun values (&rest values)
   #!+sb-doc
   "Return all arguments, in order, as values."
+  (declare (dynamic-extent values))
   (values-list values))
 
 (defun values-list (list)