Fix nested quasisyntax infinite looping
Thanks to Michael Ballantyne for the bug report
This commit is contained in:
parent
551ef55535
commit
25c9e9347a
|
@ -2044,6 +2044,14 @@
|
||||||
(test #\[ syntax-property (quasisyntax [x (unsyntax (syntax y))]) 'paren-shape)
|
(test #\[ syntax-property (quasisyntax [x (unsyntax (syntax y))]) 'paren-shape)
|
||||||
(test #\[ syntax-property (quasisyntax [x y]) 'paren-shape)
|
(test #\[ syntax-property (quasisyntax [x y]) 'paren-shape)
|
||||||
|
|
||||||
|
;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
|
;; Check that quasisyntax in quasisyntax doesn't infinite loop
|
||||||
|
|
||||||
|
(test #t syntax? (quasisyntax (quote-syntax quasisyntax)))
|
||||||
|
(test #t syntax? (quasisyntax (quasisyntax . x)))
|
||||||
|
(test #t syntax? (quasisyntax (list quasisyntax)))
|
||||||
|
(test #t syntax? (quasisyntax (x . (quasisyntax . x))))
|
||||||
|
|
||||||
;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
;; Check srcloc on result of `syntax-local-value/immediate':
|
;; Check srcloc on result of `syntax-local-value/immediate':
|
||||||
|
|
||||||
|
|
|
@ -195,8 +195,7 @@
|
||||||
[(pair? l)
|
[(pair? l)
|
||||||
(if (let ([a (car l)])
|
(if (let ([a (car l)])
|
||||||
(or (and (identifier? a)
|
(or (and (identifier? a)
|
||||||
(or (free-identifier=? a unsyntax-id)
|
(free-identifier=? a unsyntax-id))
|
||||||
(free-identifier=? a quasisyntax-id)))
|
|
||||||
(and (stx-pair? a)
|
(and (stx-pair? a)
|
||||||
(let ([a (stx-car a)])
|
(let ([a (stx-car a)])
|
||||||
(and (identifier? a)
|
(and (identifier? a)
|
||||||
|
|
Loading…
Reference in New Issue
Block a user