syntax-taint repairs
for problems exposed by more agressive arming of `lambda' and `#%app' original commit: 001cb75bac6166541c2fc6803b4e1061743cbce3
This commit is contained in:
parent
4138a2dc50
commit
8e79dbf235
|
@ -9,6 +9,8 @@
|
||||||
|
|
||||||
(provide shared)
|
(provide shared)
|
||||||
|
|
||||||
|
(define-for-syntax code-insp (current-code-inspector))
|
||||||
|
|
||||||
(define undefined (letrec ([x x]) x))
|
(define undefined (letrec ([x x]) x))
|
||||||
(require (only-in scheme/base [cons the-cons]))
|
(require (only-in scheme/base [cons the-cons]))
|
||||||
|
|
||||||
|
|
|
@ -102,6 +102,16 @@
|
||||||
orig
|
orig
|
||||||
orig))
|
orig))
|
||||||
|
|
||||||
|
(define-for-syntax code-insp (current-code-inspector))
|
||||||
|
(define-for-syntax (disarm* stx)
|
||||||
|
(cond
|
||||||
|
[(and (syntax? stx)
|
||||||
|
(pair? (syntax-e stx)))
|
||||||
|
(let ([stx (syntax-disarm stx code-insp)])
|
||||||
|
(datum->syntax stx (disarm* (syntax-e stx)) stx stx))]
|
||||||
|
[(pair? stx) (cons (disarm* (car stx)) (disarm* (cdr stx)))]
|
||||||
|
[else stx]))
|
||||||
|
|
||||||
(define-for-syntax (do-define-package stx exp-stx)
|
(define-for-syntax (do-define-package stx exp-stx)
|
||||||
(syntax-case exp-stx ()
|
(syntax-case exp-stx ()
|
||||||
[(_ pack-id mode exports form ...)
|
[(_ pack-id mode exports form ...)
|
||||||
|
@ -155,8 +165,8 @@
|
||||||
[new-bindings (make-bound-identifier-mapping)]
|
[new-bindings (make-bound-identifier-mapping)]
|
||||||
[fixup-sub-package (lambda (renamed-exports renamed-defines def-ctxes)
|
[fixup-sub-package (lambda (renamed-exports renamed-defines def-ctxes)
|
||||||
(lambda (stx)
|
(lambda (stx)
|
||||||
(syntax-case* stx (define-syntaxes #%plain-app make-package quote-syntax
|
(syntax-case* (disarm* stx) (define-syntaxes #%plain-app make-package quote-syntax
|
||||||
list cons #%plain-lambda)
|
list cons #%plain-lambda)
|
||||||
free-transformer-identifier=?
|
free-transformer-identifier=?
|
||||||
[(define-syntaxes (pack-id)
|
[(define-syntaxes (pack-id)
|
||||||
(#%plain-app
|
(#%plain-app
|
||||||
|
|
Loading…
Reference in New Issue
Block a user