fix taint-transparent syntax to lose lexical context

When submodules were introduced, the handling of taint-transparent
syntax changed to keep its lexical context. Restore the original
behavior, which is necessary to protect bindings, and fix taint
handling on submodules.

original commit: 4e3ff69798b4d1037fd865fa7715a2e77dd7a9ba
This commit is contained in:
Matthew Flatt 2014-04-20 19:56:39 -06:00
parent 2b3e3d11d5
commit 9c58e1e8cd

View File

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