X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcode%2Fsharpm.lisp;h=e720699cb1de1186ab82911c58ff92f3eb2c9997;hb=447477e72bd4fe54e678a28bdcc4a2802797d6ed;hp=0fa36cefe68ceb87e71c083e01abdbf65fb5527f;hpb=4898ef32c639b1c7f4ee13a5ba566ce6debd03e6;p=sbcl.git diff --git a/src/code/sharpm.lisp b/src/code/sharpm.lisp index 0fa36ce..e720699 100644 --- a/src/code/sharpm.lisp +++ b/src/code/sharpm.lisp @@ -303,22 +303,22 @@ (let ((entry (assoc label *sharp-equal-alist*))) (if entry (third entry) - (let ((pair (assoc label *sharp-sharp-alist*))) + (let (;; Has this label been defined previously? (Don't read + ;; ANSI "2.4.8.15 Sharpsign Equal-Sign" and worry that + ;; it requires you to implement forward references, + ;; because forward references are disallowed in + ;; "2.4.8.16 Sharpsign Sharpsign".) + (pair (assoc label *sharp-sharp-alist*))) (unless pair - (%reader-error stream "object is not labelled #~S#" label)) + (%reader-error stream "reference to undefined label #~D#" label)) (cdr pair))))) ;;;; conditional compilation: the #+ and #- readmacros (flet ((guts (stream not-p) - (unless (if (handler-case - (let ((*package* *keyword-package*) - (*read-suppress* nil)) - (featurep (read stream t nil t))) - (reader-package-error - (condition) - (declare (ignore condition)) - nil)) + (unless (if (let ((*package* *keyword-package*) + (*read-suppress* nil)) + (featurep (read stream t nil t))) (not not-p) not-p) (let ((*read-suppress* t))