diff --git a/pkgs/racket-test-core/tests/racket/stx.rktl b/pkgs/racket-test-core/tests/racket/stx.rktl index 838992b882..41232667cc 100644 --- a/pkgs/racket-test-core/tests/racket/stx.rktl +++ b/pkgs/racket-test-core/tests/racket/stx.rktl @@ -1814,6 +1814,18 @@ (test #t free-identifier=? #'begin (syntax-case a-b-stx () [(b . _) (datum->syntax #'b 'begin)])))) +;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; syntax-debug-info + +(let ([check (lambda (syntax-debug-info) + (test 'x hash-ref (syntax-debug-info #'x) 'name) + (test 'nope hash-ref (syntax-debug-info #'1) 'name 'nope) + (test 'nope hash-ref (syntax-debug-info #'(x y)) 'name 'nope))]) + (check syntax-debug-info) + (parameterize ([current-namespace (make-base-namespace)]) + (eval '(require (prefix-in foo: racket/base))) + (check (lambda (stx) (syntax-debug-info (namespace-syntax-introduce stx)))))) + ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Check that attacks are thwarted via `syntax-local-get-shadower' ;; or `make-syntax-delta-introducer': diff --git a/racket/src/racket/src/syntax.c b/racket/src/racket/src/syntax.c index 62c5a8b0cb..1320cd5e22 100644 --- a/racket/src/racket/src/syntax.c +++ b/racket/src/racket/src/syntax.c @@ -4679,6 +4679,9 @@ static Scheme_Object *unmarshal_lookup_adjust(Scheme_Object *sym, Scheme_Object Scheme_Hash_Tree *excepts; Scheme_Object *prefix; + if (!SCHEME_SYMBOLP(sym)) + return scheme_false; + excepts = extract_unmarshal_excepts(SCHEME_VEC_ELS(pes)[3]); prefix = extract_unmarshal_prefix(SCHEME_VEC_ELS(pes)[3]);