X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcode%2Fbackq.lisp;h=45a3ebda75bda82fa9d19e80c20864148f0f4fa3;hb=74cfbf6d0572b7df1b3492563408a7cb3ae103cf;hp=d9c8c00838b20b79381c334f3013aaced08429e6;hpb=6822034325136cde4e14773c83c3769b42721306;p=sbcl.git diff --git a/src/code/backq.lisp b/src/code/backq.lisp index d9c8c00..45a3ebd 100644 --- a/src/code/backq.lisp +++ b/src/code/backq.lisp @@ -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 #\@) @@ -201,15 +202,14 @@ ;;; 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)