diff options
| author | Vadim Petrochenkov <vadim.petrochenkov@gmail.com> | 2018-06-20 00:13:11 +0300 |
|---|---|---|
| committer | Vadim Petrochenkov <vadim.petrochenkov@gmail.com> | 2018-06-23 20:09:21 +0300 |
| commit | b15785b67133b5017f141d1fda1dd3dcf331b4b4 (patch) | |
| tree | 985a0c9af4d01a26a636f8032e6a7796dafbb6d9 /src/libsyntax_pos | |
| parent | 17f20bec227244a0b47c8c0c24e09452a061e09a (diff) | |
| download | rust-b15785b67133b5017f141d1fda1dd3dcf331b4b4.tar.gz rust-b15785b67133b5017f141d1fda1dd3dcf331b4b4.zip | |
hygiene: Make sure expansion info is set at most once for a given `Mark`
Diffstat (limited to 'src/libsyntax_pos')
| -rw-r--r-- | src/libsyntax_pos/hygiene.rs | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/src/libsyntax_pos/hygiene.rs b/src/libsyntax_pos/hygiene.rs index 6cf6f6f17c1..64cd31a485c 100644 --- a/src/libsyntax_pos/hygiene.rs +++ b/src/libsyntax_pos/hygiene.rs @@ -85,7 +85,14 @@ impl Mark { #[inline] pub fn set_expn_info(self, info: ExpnInfo) { - HygieneData::with(|data| data.marks[self.0 as usize].expn_info = Some(info)) + HygieneData::with(|data| { + let old_info = &mut data.marks[self.0 as usize].expn_info; + if let Some(old_info) = old_info { + panic!("expansion info is reset for the mark {}\nold: {:#?}\nnew: {:#?}", + self.0, old_info, info); + } + *old_info = Some(info); + }) } pub fn modern(mut self) -> Mark { |
