+;;; 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 "."))))))
+
+;;; IF
+(defun true () t)
+(defun false () nil)
+(defmacro oops () (throw :oops (list)))
+(defun test-eval (ok form) (assert (eq ok (catch :oops (eval form)))))
+(test-eval t '(if (false) (oops) t))
+(test-eval t '(if (true) t (oops)))
+(test-eval nil '(if (not (if (false) t)) (oops)))
+