quasisyntax: fix reporting for misused unsyntax[-splicing]

Closes PR 14652
This commit is contained in:
Matthew Flatt 2014-07-23 11:01:41 +01:00
parent 0e4db0a7f0
commit 4c8084e5d8
2 changed files with 16 additions and 0 deletions

View File

@ -1794,6 +1794,13 @@
(quasisyntax #s(PS a (unsyntax b) (unsyntax-splicing ds))))
|#))
(syntax-test #'(quasisyntax unsyntax))
(syntax-test #'(quasisyntax (unsyntax)))
(syntax-test #'(quasisyntax (unsyntax 1 2)))
(syntax-test #'(quasisyntax unsyntax-splicing))
(syntax-test #'(quasisyntax (unsyntax-splicing)))
(syntax-test #'(quasisyntax (unsyntax-splicing 1 2)))
;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Check preservation of properties by `quasisyntax'

View File

@ -155,6 +155,15 @@
"misuse within quasisyntax"
orig-stx
stx)]
[(us . _)
(and (identifier? #'us)
(or (free-identifier=? #'us unsyntax-id)
(free-identifier=? #'us unsyntax-splicing-id)))
(raise-syntax-error
#f
"misuse within quasisyntax"
orig-stx
stx)]
[(qs x)
(and (identifier? #'qs)
(free-identifier=? #'qs quasisyntax-id))