syntax-debug-info: handle non-identifiers correctly
In particular, fix the handling of binding information when the context includes prefixing on import. Closes PR 15173
This commit is contained in:
parent
31b035cc94
commit
342198625e
|
@ -1814,6 +1814,18 @@
|
||||||
(test #t free-identifier=? #'begin (syntax-case a-b-stx ()
|
(test #t free-identifier=? #'begin (syntax-case a-b-stx ()
|
||||||
[(b . _) (datum->syntax #'b 'begin)]))))
|
[(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'
|
;; Check that attacks are thwarted via `syntax-local-get-shadower'
|
||||||
;; or `make-syntax-delta-introducer':
|
;; or `make-syntax-delta-introducer':
|
||||||
|
|
|
@ -4679,6 +4679,9 @@ static Scheme_Object *unmarshal_lookup_adjust(Scheme_Object *sym, Scheme_Object
|
||||||
Scheme_Hash_Tree *excepts;
|
Scheme_Hash_Tree *excepts;
|
||||||
Scheme_Object *prefix;
|
Scheme_Object *prefix;
|
||||||
|
|
||||||
|
if (!SCHEME_SYMBOLP(sym))
|
||||||
|
return scheme_false;
|
||||||
|
|
||||||
excepts = extract_unmarshal_excepts(SCHEME_VEC_ELS(pes)[3]);
|
excepts = extract_unmarshal_excepts(SCHEME_VEC_ELS(pes)[3]);
|
||||||
prefix = extract_unmarshal_prefix(SCHEME_VEC_ELS(pes)[3]);
|
prefix = extract_unmarshal_prefix(SCHEME_VEC_ELS(pes)[3]);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user