expander: fix taint propagation

A taint on a syntax object without scopes to propagate was propagated
incorrectly to a nested syntax object that also has pending scopes to
propagate.
This commit is contained in:
Matthew Flatt 2018-03-05 15:59:34 -07:00
parent 275d7974cd
commit bbefc9ed50
3 changed files with 8494 additions and 8483 deletions

View File

@ -383,9 +383,9 @@
(syntax-scopes sub-s)
(syntax-shifted-multi-scopes sub-s)
(syntax-mpi-shifts sub-s))])
(struct-copy syntax sub-s
[scope-propagations+tamper (tamper-tainted-for-content
(syntax-content sub-s))]))))])
(struct-copy/t syntax sub-s
[tamper (tamper-tainted-for-content
(syntax-content sub-s))]))))])
(set-syntax-content! s new-content)
(set-syntax-scope-propagations+tamper! s (tamper-propagated (if (propagation? prop)
(propagation-tamper prop)

View File

@ -10,7 +10,9 @@
syntax-arm
syntax-disarm
syntax-rearm
syntax-taint)
syntax-taint
struct-copy/t)
(define-syntax struct-copy/t
(syntax-rules (syntax tamper)

File diff suppressed because it is too large Load Diff