Fix nested quasisyntax infinite looping

Thanks to Michael Ballantyne for the bug report
This commit is contained in:
Asumu Takikawa 2016-05-02 15:12:09 -04:00
parent 551ef55535
commit 25c9e9347a
2 changed files with 9 additions and 2 deletions

View File

@ -2044,6 +2044,14 @@
(test #\[ syntax-property (quasisyntax [x (unsyntax (syntax 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':

View File

@ -195,8 +195,7 @@
[(pair? l)
(if (let ([a (car l)])
(or (and (identifier? a)
(or (free-identifier=? a unsyntax-id)
(free-identifier=? a quasisyntax-id)))
(free-identifier=? a unsyntax-id))
(and (stx-pair? a)
(let ([a (stx-car a)])
(and (identifier? a)