diff --git a/typed-racket-lib/typed-racket/typecheck/internal-forms.rkt b/typed-racket-lib/typed-racket/typecheck/internal-forms.rkt index 46df1ddc..4efb7d4e 100644 --- a/typed-racket-lib/typed-racket/typecheck/internal-forms.rkt +++ b/typed-racket-lib/typed-racket/typecheck/internal-forms.rkt @@ -76,6 +76,8 @@ #:attributes (value) #:literal-sets (kernel-literals internal-form-literals) (pattern (define-values () (begin (quote-syntax value:expr) (#%plain-app values)))) + ;; handles form that splicing-syntax-parameterize expands to + (pattern (define-values () (letrec-syntaxes+values _ () (quote-syntax value:expr) (#%plain-app values)))) ;; for use in forms like classes that transform definitions (pattern (let-values ([() (begin (quote-syntax value:expr) (#%plain-app values))]) (#%plain-app void)))) diff --git a/typed-racket-test/fail/pr14973.rkt b/typed-racket-test/fail/pr14973.rkt new file mode 100644 index 00000000..92d7eb16 --- /dev/null +++ b/typed-racket-test/fail/pr14973.rkt @@ -0,0 +1,11 @@ +#lang typed/racket/base + +(require (for-syntax racket/base) + racket/splicing + racket/stxparam) + +(define-syntax-parameter foo #f) + +(splicing-syntax-parameterize ([foo #t]) + (: x Number) + (define x "string"))