0.9.2.43:
[sbcl.git] / tests / eval.impure.lisp
index d0f768b..a7f44b7 100644 (file)
@@ -6,7 +6,7 @@
 ;;;; While most of SBCL is derived from the CMU CL system, the test
 ;;;; files (like this one) were written from scratch after the fork
 ;;;; from CMU CL.
-;;;; 
+;;;;
 ;;;; This software is in the public domain and is provided with
 ;;;; absolutely no warranty. See the COPYING and CREDITS files for
 ;;;; more information.
@@ -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:
@@ -94,7 +97,6 @@
 
 ;;; Bug reported by Paul Dietz: CONSTANTP on a self-evaluating object
 ;;; must return T
-
 (assert (constantp (find-class 'symbol)))
 (assert (constantp #p""))
 
                               ,var))
                  '(1 2))))
 
-\f
+;;; 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)