From b15785b67133b5017f141d1fda1dd3dcf331b4b4 Mon Sep 17 00:00:00 2001 From: Vadim Petrochenkov Date: Wed, 20 Jun 2018 00:13:11 +0300 Subject: [PATCH] hygiene: Make sure expansion info is set at most once for a given `Mark` --- src/libsyntax_pos/hygiene.rs | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/libsyntax_pos/hygiene.rs b/src/libsyntax_pos/hygiene.rs index 6cf6f6f17c1dd..64cd31a485cdf 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 {