Don't warn when #'(setf fun) is used in the presence of a setf-macro.
[sbcl.git] / tests / compiler.impure.lisp
index a11df47..2fe23b1 100644 (file)
 (defun test-function-983 (x) x)
 (define-compiler-macro test-function-983 (x) x)
 
-(with-test (:name funcall-compiler-macro)
+(with-test (:name :funcall-compiler-macro)
   (assert
    (handler-case
-       (compile nil
-                `(lambda ()
-                   (funcall (function test-function-983 junk) 1)))
-     (sb-c:compiler-error () t)
-     (:no-error () nil))))
+       (and (compile nil
+                     `(lambda ()
+                        (funcall (function test-function-983 junk) 1)))
+            nil)
+     (sb-c:compiler-error () t))))
+
+(defsetf test-984 %test-984)
+
+(with-test (:name :setf-function-with-setf-expander)
+  (assert
+   (handler-case
+       (and
+        (defun (setf test-984) ())
+        nil)
+     (style-warning () t)))
+  (assert
+   (handler-case
+       (and
+        (compile nil `(lambda () #'(setf test-984)))
+        t)
+     (warning () nil))))
+
+(with-test (:name :compile-setf-function)
+  (defun (setf compile-setf) ())
+  (assert (equal (compile '(setf compile-setf))
+                 '(setf compile-setf))))
+
 \f
 ;;;; tests not in the problem domain, but of the consistency of the
 ;;;; compiler machinery itself