Adjust local-require to be more deliberate about syntax-local-introduce
This ensures macro-introduction scopes don’t unintentionally end up on lifted pieces of syntax, which causes problems for Check Syntax, since it affects the syntax-original?-ness of the require spec.
This commit is contained in:
parent
a539825dc9
commit
bbbdee2853
|
@ -1182,7 +1182,7 @@
|
||||||
(import-mode i)
|
(import-mode i)
|
||||||
(list #'rename
|
(list #'rename
|
||||||
(import-src-mod-path i)
|
(import-src-mod-path i)
|
||||||
(syntax-local-introduce (import-local-id i))
|
(import-local-id i)
|
||||||
(import-src-sym i))))
|
(import-src-sym i))))
|
||||||
(import-orig-stx i)))
|
(import-orig-stx i)))
|
||||||
|
|
||||||
|
@ -1192,6 +1192,7 @@
|
||||||
(define-syntax (local-require stx)
|
(define-syntax (local-require stx)
|
||||||
(when (eq? 'expression (syntax-local-context))
|
(when (eq? 'expression (syntax-local-context))
|
||||||
(raise-syntax-error #f "not allowed in an expression context" stx))
|
(raise-syntax-error #f "not allowed in an expression context" stx))
|
||||||
|
(let ([stx (syntax-local-introduce stx)])
|
||||||
(syntax-case stx []
|
(syntax-case stx []
|
||||||
[(_ spec ...)
|
[(_ spec ...)
|
||||||
(let*-values ([(imports sources)
|
(let*-values ([(imports sources)
|
||||||
|
@ -1207,10 +1208,10 @@
|
||||||
[(renamed-imports) (map rename-import imports reqd-names)]
|
[(renamed-imports) (map rename-import imports reqd-names)]
|
||||||
[(raw-specs) (map import->raw-require-spec renamed-imports)]
|
[(raw-specs) (map import->raw-require-spec renamed-imports)]
|
||||||
[(lifts) (map syntax-local-lift-require raw-specs reqd-names)])
|
[(lifts) (map syntax-local-lift-require raw-specs reqd-names)])
|
||||||
(with-syntax ([(name ...) names]
|
(with-syntax ([(name ...) (map syntax-local-introduce names)]
|
||||||
[(lifted ...) lifts])
|
[(lifted ...) (map syntax-local-introduce lifts)])
|
||||||
(syntax/loc stx (define-syntaxes (name ...)
|
(syntax/loc stx (define-syntaxes (name ...)
|
||||||
(values (make-rename-transformer (quote-syntax lifted)) ...)))))]))
|
(values (make-rename-transformer (quote-syntax lifted)) ...)))))])))
|
||||||
|
|
||||||
;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
)
|
)
|
||||||
|
|
Loading…
Reference in New Issue
Block a user