From 4c8084e5d8360575b7e5bc3af978c800c1286581 Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Wed, 23 Jul 2014 11:01:41 +0100 Subject: [PATCH] quasisyntax: fix reporting for misused `unsyntax[-splicing]` Closes PR 14652 --- pkgs/racket-pkgs/racket-test/tests/racket/stx.rktl | 7 +++++++ racket/collects/racket/private/qqstx.rkt | 9 +++++++++ 2 files changed, 16 insertions(+) diff --git a/pkgs/racket-pkgs/racket-test/tests/racket/stx.rktl b/pkgs/racket-pkgs/racket-test/tests/racket/stx.rktl index 35ddf188ba..926b20d098 100644 --- a/pkgs/racket-pkgs/racket-test/tests/racket/stx.rktl +++ b/pkgs/racket-pkgs/racket-test/tests/racket/stx.rktl @@ -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' diff --git a/racket/collects/racket/private/qqstx.rkt b/racket/collects/racket/private/qqstx.rkt index d823b43c07..2cab92aeb2 100644 --- a/racket/collects/racket/private/qqstx.rkt +++ b/racket/collects/racket/private/qqstx.rkt @@ -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))