0.8.21.12: compiler message fixes
[sbcl.git] / tests / eval.impure.lisp
index 8b0cf57..6b22474 100644 (file)
@@ -18,6 +18,9 @@
 
 (cl:in-package :cl-user)
 
+(load "assertoid.lisp")
+(use-package "ASSERTOID")
+
 ;;; Until sbcl-0.7.9.x, EVAL was not correctly treating LOCALLY,
 ;;; MACROLET and SYMBOL-MACROLET, which should preserve top-levelness
 ;;; of their body forms:
                               ,var))
                  '(1 2))))
 
+;;; Bug 264: SYMBOL-MACROLET did not check for a bound SPECIAL
+;;; declaration
+(assert (raises-error? (progv '(foo) '(1)
+                         (eval '(symbol-macrolet ((foo 3))
+                                 (declare (special foo))
+                                 foo)))
+                       error))
+
+;;; MAKE-PACKAGE (and other &key functions) should signal an error
+;;; when given a NIL key.  This is kind of a compiler test really, but
+;;; this'll do as a resting place.
+(handler-case
+    (eval '(make-package "FOO" nil nil))
+  (error () :ok)
+  (:no-error (c) (error "MAKE-PACKAGE succeeded: ~S" c)))
+
+;;; FUNCTION
+(defun function-eq-test ()
+  'ok)
+(trace function-eq-test)
+(assert (eq (eval '(function function-eq-test))
+            (funcall (compile nil '(lambda () (function function-eq-test))))))
+
+;;; No extra output, please
+(assert (equal ".."
+              (with-output-to-string (*standard-output*)
+                (eval '(progn (princ ".") (let ((x 42)) t) (princ "."))))))
+
 ;;; success
 (sb-ext:quit :unix-status 104)