diff --git a/ansi-tests/declaration.lsp b/ansi-tests/declaration.lsp
index 5ee823f723cebb84a25c4cc6c98d24f6df7fa79f..7084838736a3f2da4c5814f48a4b2dfd22674aae 100644
--- a/ansi-tests/declaration.lsp
+++ b/ansi-tests/declaration.lsp
@@ -27,6 +27,12 @@
 ;;;  structure, condition, or type, when the symbol has been
 ;;;  declared as a declaration name, or vice versa, signals an error."
 
+;;; Declare these only if bad declarations produce warnings.
+
+(when (block done
+	(handler-bind ((warning #'(lambda (c) (return-from done t))))
+		      (eval `(let () (declare (,(gensym))) nil))))
+
 (deftest declaration.4
   (let ((sym (gensym)))
     (proclaim `(declaration ,sym))
@@ -54,7 +60,7 @@
 
 (deftest declaration.8
   (let ((sym (gensym)))
-    (eval `(deftype ,sym () error))
+    (eval `(deftype ,sym () 'error))
     (eval `(signals-error-always (proclaim '(declaration ,sym))
 				 error)))
   t t)
@@ -80,6 +86,8 @@
 				 error)))
   t t)
 
+)
+