repair interaction of taints and submodule expansion

original commit: dc11090f6bc6f4bf4494e50350526a221cfed50a
This commit is contained in:
Matthew Flatt 2013-06-26 04:28:57 +02:00
parent 609f5d5aa2
commit 1fabdff401

View File

@ -5,21 +5,25 @@
;; For simplicity, protect everything produced by Typed Racket.
(define (arm stx)
(syntax-case stx (module #%plain-module-begin
(syntax-case stx (module module* #%plain-module-begin
#%require #%provide begin
define-values define-syntaxes
define-values-for-syntax)
begin-for-syntax)
[(module name initial-import mb)
(quasisyntax/loc stx (module name initial-import #,(arm #'mb)))]
[(#%plain-module-begin . _) (syntax-arm stx)]
[(module* name initial-import mb)
(quasisyntax/loc stx (module* name initial-import #,(arm #'mb)))]
[(#%plain-module-begin . _) (syntax-property (syntax-arm stx)
'taint-mode
'opaque)]
[(#%require . _) stx]
[(#%provide . _) stx]
[(begin form ...)
(quasisyntax/loc stx (begin #,@(stx-map arm #'(form ...))))]
[(begin-for-syntax form ...)
(quasisyntax/loc stx (begin-for-syntax #,@(stx-map arm #'(form ...))))]
[(define-values ids expr)
(quasisyntax/loc stx (define-values ids #,(arm #'expr)))]
[(define-syntaxes ids expr)
(quasisyntax/loc stx (define-syntaxes ids #,(arm #'expr)))]
[(define-values-for-syntax ids expr)
(quasisyntax/loc stx (define-values-for-syntax ids #,(arm #'expr)))]
[_ (syntax-arm stx)]))