1.0.39.9: improvements to the manual
[sbcl.git] / src / code / backq.lisp
index d9c8c00..45a3ebd 100644 (file)
@@ -46,6 +46,7 @@
 (defvar *bq-at-flag* '(|,@|))
 (defvar *bq-dot-flag* '(|,.|))
 (defvar *bq-vector-flag* '(|bqv|))
+(defvar *bq-error* "Comma not inside a backquote.")
 
 (/show0 "backq.lisp 50")
 
@@ -68,7 +69,7 @@
   (unless (> *backquote-count* 0)
     (when *read-suppress*
       (return-from comma-macro nil))
-    (simple-reader-error stream "comma not inside a backquote"))
+    (simple-reader-error stream *bq-error*))
   (let ((c (read-char stream))
         (*backquote-count* (1- *backquote-count*)))
     (cond ((char= c #\@)
 ;;; them, the backquoted material will be recognizable to the
 ;;; pretty-printer.
 (macrolet ((def (b-name name)
-             (let ((args (gensym "ARGS")))
                ;; FIXME: This function should be INLINE so that the lists
                ;; aren't consed twice, but I ran into an optimizer bug the
                ;; first time I tried to make this work for BACKQ-LIST. See
                ;; whether there's still an optimizer bug, and fix it if so, and
                ;; then make these INLINE.
-               `(defun ,b-name (&rest ,args)
-                  (declare (truly-dynamic-extent ,args))
-                  (apply #',name ,args)))))
+               `(defun ,b-name (&rest rest)
+                  (declare (truly-dynamic-extent rest))
+                  (apply #',name rest))))
   (def backq-list list)
   (def backq-list* list*)
   (def backq-append append)