X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcode%2Ffull-eval.lisp;h=718f5f13c33981a3abdc64ffbfcfc1f179410a6f;hb=d94c1b4a8c534bde146823f56558faf37cd4c4d7;hp=6f6a88f6adce45fe1746783d47207419115a006f;hpb=d2b9d8bbd2d1489723a4437e64f607585670ed58;p=sbcl.git diff --git a/src/code/full-eval.lisp b/src/code/full-eval.lisp index 6f6a88f..718f5f1 100644 --- a/src/code/full-eval.lisp +++ b/src/code/full-eval.lisp @@ -104,7 +104,8 @@ nil nil nil nil nil (sb!c::lexenv-handled-conditions old-lexenv) (sb!c::lexenv-disabled-package-locks old-lexenv) - (sb!c::lexenv-policy old-lexenv)))) + (sb!c::lexenv-policy old-lexenv) + (sb!c::lexenv-user-data old-lexenv)))) (dolist (declaration declarations) (unless (consp declaration) (ip-error "malformed declaration specifier ~S in ~S" @@ -175,7 +176,8 @@ (sb!c::internal-make-lexenv nil nil nil nil nil nil nil nil nil - sb!c::*policy*))) + sb!c::*policy* + nil))) ;;; Augment ENV with a special or lexical variable binding (declaim (inline push-var)) @@ -236,7 +238,10 @@ (cond ((eq type :constant) ;; Horrible place for this, but it works. - (ip-error "Can't bind constant symbol ~S" symbol)) + (ip-error "Can't bind constant symbol: ~S" symbol)) + ((eq type :global) + ;; Ditto... + (ip-error "Can't bind a global variable: ~S" symbol)) ((eq type :special) t) ((member symbol declared-specials :test #'eq) t) @@ -539,10 +544,8 @@ ;;; Return true if EXP is a lambda form. (defun lambdap (exp) - (case (car exp) ((lambda - sb!int:named-lambda - sb!kernel:instance-lambda) - t))) + (case (car exp) + ((lambda sb!int:named-lambda) t))) ;;; Split off the declarations (and the docstring, if ;;; DOC-STRING-ALLOWED is true) from the actual forms of BODY. @@ -572,7 +575,7 @@ ;;; in the environment ENV. (defun eval-lambda (exp env) (case (car exp) - ((lambda sb!kernel:instance-lambda) + ((lambda) (multiple-value-bind (body documentation declarations) (parse-lambda-headers (cddr exp) :doc-string-allowed t) (make-interpreted-function :lambda-list (second exp)