use old ctx if has same expand environment during decode span
This commit is contained in:
parent
9f877c9cd2
commit
07481b9e90
2 changed files with 42 additions and 0 deletions
|
@ -1413,6 +1413,14 @@ pub fn decode_syntax_context<D: Decoder, F: FnOnce(&mut D, u32) -> SyntaxContext
|
|||
|
||||
// Overwrite the dummy data with our decoded SyntaxContextData
|
||||
HygieneData::with(|hygiene_data| {
|
||||
if let Some(old) = hygiene_data.syntax_context_data.get(raw_id as usize)
|
||||
&& old.outer_expn == ctxt_data.outer_expn
|
||||
&& old.outer_transparency == ctxt_data.outer_transparency
|
||||
&& old.parent == ctxt_data.parent
|
||||
{
|
||||
ctxt_data = old.clone();
|
||||
}
|
||||
|
||||
let dummy = std::mem::replace(
|
||||
&mut hygiene_data.syntax_context_data[ctxt.as_u32() as usize],
|
||||
ctxt_data,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue