X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=tests%2Fcompiler.pure.lisp;h=c8d09acdded3a910c9d7a4134ae86f8f330c02f1;hb=f42877dcb11f1db580c76c37ae86541b901ac281;hp=0cd2fac3de93c9b8cfe663f9a40c03b63fd815f5;hpb=ca8135a6852cde2206ce9bdaa9b9d57f3b047f4e;p=sbcl.git diff --git a/tests/compiler.pure.lisp b/tests/compiler.pure.lisp index 0cd2fac..c8d09ac 100644 --- a/tests/compiler.pure.lisp +++ b/tests/compiler.pure.lisp @@ -2759,7 +2759,7 @@ (eval '(,lambda ,@args)))))))) (sb-vm::with-float-traps-masked (:divide-by-zero :overflow :inexact :invalid) - (let ((sb-ext:*evaluator-mode* :interpret)) + (let (#+sb-eval (sb-ext:*evaluator-mode* :interpret)) (declare (sb-ext:muffle-conditions style-warning)) (test-comparison eql t t nil) (test-comparison eql t t t) @@ -3765,3 +3765,25 @@ (let ((f (eval '(constantly 42)))) (handler-bind ((warning #'error)) (assert (= 42 (funcall (compile nil `(lambda () (funcall ,f 1 2 3))))))))) + +(with-test (:name :known-fun-allows-other-keys) + (handler-bind ((warning #'error)) + (funcall (compile nil '(lambda () (directory "." :allow-other-keys t)))) + (funcall (compile nil `(lambda () (directory "." :bar t :allow-other-keys t)))))) + +(with-test (:name :bug-551227) + ;; This function causes constraint analysis to perform a + ;; ref-substitution that alters the A referred to in (G A) at in the + ;; consequent of the IF to refer to be NUMBER, from the + ;; LET-converted inline-expansion of MOD. This leads to attempting + ;; to CLOSE-OVER a variable that simply isn't in scope when it is + ;; referenced. + (compile nil '(lambda (a) + (if (let ((s a)) + (block :block + (map nil + (lambda (e) + (return-from :block + (f (mod a e)))) + s))) + (g a)))))