From 8f45c84483658bd94f90b58257ad1cb4805bc7aa Mon Sep 17 00:00:00 2001
From: pfdietz <pfdietz@localhost>
Date: Mon, 4 Nov 2002 04:31:09 +0000
Subject: [PATCH] Changed SPECIAL-OPERATOR-P.2 to allow non-standard special
 operator symbols, as long as the have a MACRO-FUNCTION in the null lexical
 environment.  The spec is inconsistent on whether any such symbols can exist.

---
 ansi-tests/cl-symbols.lsp | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/ansi-tests/cl-symbols.lsp b/ansi-tests/cl-symbols.lsp
index 58f8cb69..6da71a75 100644
--- a/ansi-tests/cl-symbols.lsp
+++ b/ansi-tests/cl-symbols.lsp
@@ -1063,12 +1063,16 @@
   nil)
 
 ;;; None of the standard symbols except those in +special-operators+
-;;; are special operators
+;;; are special operators, unless they have a macro function
+;;; (See the page for MACRO-FUNCTION)
+
 (deftest special-operator-p.2
   (let ((p (find-package "CL")))
     (loop for name in *cl-symbol-names*
 	  unless (or (member name +special-operators+ :test #'string=)
-		     (not (special-operator-p (find-symbol name p))))
+		     (let ((sym (find-symbol name p)))
+		       (or (not (special-operator-p sym))
+			   (macro-function sym))))
 	  collect name))
   nil)
 
-- 
GitLab