Steel Bank Common Lisp

disappearing output from backquoted forms if *print-circle* = t

Reported by Douglas Katzman on 2013-03-28
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
SBCL
Medium
Unassigned

Bug Description

In the first output sample, label #3# is not defined.

(defparameter myform
  '(LET ((#1=#:G796 8) (#2=#:G795 NIL))
        (SETF #2# (FROB-SOMETHING (MUMBLE #1#)))
        `(PROGN ,@(MAPCAN (LAMBDA (FOO) (WHEN (BAR FOO) (FROB FOO)))
                          #2#))))

;; Fail
* (let ((*print-circle* t)) (pprint form))
(LET ((#1=#:G796 8) (#2=#:G795 NIL))
  (SETF #2# (FROB-SOMETHING (MUMBLE #1#)))
  `(PROGN ,@#3#))

;; OK
* (let ((*print-circle* nil)) (pprint form))
(LET ((#:G796 8) (#:G795 NIL))
  (SETF #:G795 (FROB-SOMETHING (MUMBLE #:G796)))
  `(PROGN ,@(MAPCAN (LAMBDA (FOO) (WHEN (BAR FOO) (FROB FOO))) #:G795)))

sbcl --version
SBCL 1.1.5.15-0892423-dirty
[local patches have nothing to do with this problem]

James M. Lawrence (llmjjmll) wrote :

Some reduction:

(defparameter *f*
  '(let ((#1=#:var '(99)))
    `(progn ,@(identity #1#))))

(write *f* :circle t)
;; =>
(LET ((#1=#:VAR '(99)))
  `(PROGN ,@#2#))

Paul Khuong (pvk) on 2013-03-30
Changed in sbcl:
status: New → In Progress
importance: Undecided → Medium
assignee: nobody → Paul Khuong (pvk)
Paul Khuong (pvk) wrote :

Fixed in 70f323d9b (Stop emitting references to inexistant #n= forms in the pretty printer)

Changed in sbcl:
status: In Progress → Fix Committed
assignee: Paul Khuong (pvk) → nobody
Changed in sbcl:
status: Fix Committed → Fix Released
To post a comment you must log in.
This report contains Public information  Edit
Everyone can see this information.

Other bug subscribers