diff --git a/pkgs/racket-test-core/tests/racket/stx.rktl b/pkgs/racket-test-core/tests/racket/stx.rktl index 5a42e4cfcc..15fafd2797 100644 --- a/pkgs/racket-test-core/tests/racket/stx.rktl +++ b/pkgs/racket-test-core/tests/racket/stx.rktl @@ -53,6 +53,10 @@ (test 'val syntax-property s 'key) (test #f syntax-property (syntax-property-remove s 'key) 'key)) +(test #t immutable? (syntax-e (datum->syntax #f (string #\a)))) +(test #t immutable? (syntax-e (syntax-case (datum->syntax #f (list (string #\a))) () + [(a) #'a]))) + ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; some syntax-case patterns ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; diff --git a/racket/src/expander/syntax/syntax.rkt b/racket/src/expander/syntax/syntax.rkt index 2bd2407ece..453e3f29bb 100644 --- a/racket/src/expander/syntax/syntax.rkt +++ b/racket/src/expander/syntax/syntax.rkt @@ -233,25 +233,26 @@ [else (define insp (if (syntax? s) 'not-needed (current-module-code-inspector))) (define (wrap content) - (syntax (if (and stx-c - (syntax-tamper stx-c)) - (modified-content content - (tamper-tainted-for-content content)) - content) - (if stx-c - (syntax-scopes stx-c) - empty-scopes) - (if stx-c - (syntax-shifted-multi-scopes stx-c) - empty-shifted-multi-scopes) - (if stx-c - (syntax-mpi-shifts stx-c) - empty-mpi-shifts) - (and stx-l (syntax-srcloc stx-l)) - empty-props - (and insp - stx-c - (weaker-inspector insp (syntax-inspector stx-c))))) + (let ([content (datum-intern-literal content)]) + (syntax (if (and stx-c + (syntax-tamper stx-c)) + (modified-content content + (tamper-tainted-for-content content)) + content) + (if stx-c + (syntax-scopes stx-c) + empty-scopes) + (if stx-c + (syntax-shifted-multi-scopes stx-c) + empty-shifted-multi-scopes) + (if stx-c + (syntax-mpi-shifts stx-c) + empty-mpi-shifts) + (and stx-l (syntax-srcloc stx-l)) + empty-props + (and insp + stx-c + (weaker-inspector insp (syntax-inspector stx-c)))))) (define result-s (non-syntax-map s (lambda (tail? x) (cond diff --git a/racket/src/racket/src/startup.inc b/racket/src/racket/src/startup.inc index 490ca06a27..7a44d3424b 100644 --- a/racket/src/racket/src/startup.inc +++ b/racket/src/racket/src/startup.inc @@ -6259,12 +6259,13 @@ static const char *startup_source = "(lambda(content_0)" "(begin" " 'wrap" +"(let-values(((content_1)(datum-intern-literal content_0)))" "(syntax2.1" "(if(if stx-c_0(syntax-tamper stx-c_0) #f)" "(modified-content1.1" -" content_0" -"(tamper-tainted-for-content content_0))" -" content_0)" +" content_1" +"(tamper-tainted-for-content content_1))" +" content_1)" "(if stx-c_0(syntax-scopes stx-c_0) empty-scopes)" "(if stx-c_0" "(syntax-shifted-multi-scopes stx-c_0)" @@ -6288,7 +6289,7 @@ static const char *startup_source = "(let-values() a_0)" "(let-values() #f)))))))" " #f)" -" #f))))))" +" #f)))))))" "(let-values(((result-s_0)" "(let-values(((s_1) s_0)" "((f_0)"