pretty-print: fix 'unquote in mpair and vectors
Fix misinterpretation of `'unquote` within an `mcons` or `vector` construction in expression-printing mode. Closes #3652
This commit is contained in:
parent
fc955b99f3
commit
1558e0bde4
|
@ -670,6 +670,14 @@
|
|||
"('a ,a `a ,@a #'a #,a #`a #,@a)"
|
||||
"'('a ,a `a ,@a #'a #,a #`a #,@a)"
|
||||
"('a ,a `a ,@a #'a #,a #`a #,@a)"))
|
||||
|
||||
(parameterize ([print-reader-abbreviations #t])
|
||||
(test-print/all (list (mcons 'unquote '()) (vector (mcons 1 2) 'unquote '()))
|
||||
"({unquote} #({1 . 2} unquote ()))"
|
||||
"({unquote} #({1 . 2} unquote ()))"
|
||||
"({unquote} #({1 . 2} unquote ()))"
|
||||
"(list (mcons 'unquote '()) (vector (mcons 1 2) 'unquote '()))"
|
||||
"({unquote} #({1 . 2} unquote ()))"))
|
||||
|
||||
(void)))
|
||||
|
||||
|
|
|
@ -756,7 +756,8 @@
|
|||
(lambda ()
|
||||
(cond
|
||||
[(pair? l)
|
||||
(if (and (eq? (do-remap (car l)) 'unquote)
|
||||
(if (and check?
|
||||
(eq? (do-remap (car l)) 'unquote)
|
||||
(not (equal? qd 1))
|
||||
(pair? (cdr l))
|
||||
(null? (cdr (cdr l))))
|
||||
|
@ -806,8 +807,8 @@
|
|||
#f #f
|
||||
(lambda ()
|
||||
(if (and qd (zero? qd))
|
||||
(wr-expr (list (make-unquoted 'mcons) (mcar obj) (mcdr obj))
|
||||
depth pair? car cdr "(" ")" qd)
|
||||
(wr-lst (list (make-unquoted 'mcons) (mcar obj) (mcdr obj))
|
||||
#f depth pair? car cdr "(" ")" qd)
|
||||
(wr-expr obj depth mpair? mcar mcdr mpair-open mpair-close qd))))]
|
||||
[(null? obj)
|
||||
(let ([qd (to-quoted out qd obj)])
|
||||
|
@ -1048,8 +1049,8 @@
|
|||
qd))]
|
||||
[(mpair? obj)
|
||||
(if (and qd (zero? qd))
|
||||
(pp-pair (list (make-unquoted 'mcons) (mcar obj) (mcdr obj))
|
||||
extra depth
|
||||
(pp-list (list (make-unquoted 'mcons) (mcar obj) (mcdr obj))
|
||||
extra pp-expr #f depth
|
||||
pair? car cdr "(" ")"
|
||||
qd)
|
||||
(pp-pair obj extra depth
|
||||
|
@ -1058,8 +1059,8 @@
|
|||
[(vector? obj)
|
||||
(let ([qd (to-quoted out qd obj)])
|
||||
(if (and qd (zero? qd))
|
||||
(pp-pair (cons (make-unquoted 'vector) (vector->list obj))
|
||||
extra depth
|
||||
(pp-list (cons (make-unquoted 'vector) (vector->list obj))
|
||||
extra pp-expr #f depth
|
||||
pair? car cdr pair-open pair-close
|
||||
qd)
|
||||
(begin
|
||||
|
|
Loading…
Reference in New Issue
Block a user