(loop with map = nil
with form = nil
with eof = nil
+ for i from 0
do (setf (values form map)
(handler-case
(read-and-record-source-map stream)
(end-of-file ()
(setf eof t))
- (error ()
- (values nil nil))))
+ (error (error)
+ (warn "Error when recording source map for toplevel form ~A:~% ~A" i error)
+ (values nil
+ (make-hash-table)))))
until eof
when map
collect (cons form map)))))
(defun suppress-sharp-dot (readtable)
(when (get-macro-character #\# readtable)
(let ((sharp-dot (get-dispatch-macro-character #\# #\. readtable)))
- (set-dispatch-macro-character #\# #\. (lambda (&rest args)
- (let ((*read-suppress* t))
- (apply sharp-dot args))
- (if *read-suppress*
- (values)
- (list (gensym "#."))))
+ (set-dispatch-macro-character #\# #\.
+ (lambda (&rest args)
+ (let ((*read-suppress* t))
+ (apply sharp-dot args)))
readtable))))
(defun read-and-record-source-map (stream)
(incf a))
a))
+;;; Test for a bad interaction between *READ-SUPPRESS* and #. in
+;;; source location recording.
+(identity #+sbcl #.1
+ #+cmu #.3)
+
;;; This test would show that we do correct detection of non-cons
;;; source forms in non-PROGN-contexts. Which we don't, so this test
;;; is commented out.
;;; checkins which aren't released. (And occasionally for internal
;;; versions, especially for internal versions off the main CVS
;;; branch, it gets hairier, e.g. "0.pre7.14.flaky4.13".)
-"1.0.5.43"
+"1.0.5.44"