X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=tests%2Feval.impure.lisp;h=0baf4e9bde353b3a68363540c17ca10637ebb46d;hb=a00ea11a89c9db677e60edf6832c905a4527b5cb;hp=c79066a816c02e4e527dae3c64dbc031d84d56ee;hpb=5919ecc5fee77630855da6aeeabdc7d8cc4f2762;p=sbcl.git diff --git a/tests/eval.impure.lisp b/tests/eval.impure.lisp index c79066a..0baf4e9 100644 --- a/tests/eval.impure.lisp +++ b/tests/eval.impure.lisp @@ -249,4 +249,36 @@ (simple-type-error () 'error))) t))) +(with-test (:name :bug-524707 :skipped-on '(not :sb-eval)) + (let ((*evaluator-mode* :interpret) + (lambda-form '(lambda (x) (declare (fixnum x)) (1+ x)))) + (let ((fun (eval lambda-form))) + (assert (equal lambda-form (function-lambda-expression fun)))))) + +(with-test (:name (eval :source-context-in-compiler)) + (let ((noise (with-output-to-string (*error-output*) + (let ((*evaluator-mode* :compile)) + (eval `(defun source-context-test (x) y)))))) + (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