Do not re-hash foreign spans.
This commit is contained in:
parent
ce21756ed3
commit
daf8903e8e
2 changed files with 27 additions and 11 deletions
|
@ -664,7 +664,21 @@ impl<'a, 'tcx> Decodable<CacheDecoder<'a, 'tcx>> for ExpnId {
|
|||
|
||||
let data: ExpnData = decoder
|
||||
.with_position(pos.to_usize(), |decoder| decode_tagged(decoder, TAG_EXPN_DATA))?;
|
||||
rustc_span::hygiene::register_local_expn_id(data, hash)
|
||||
let expn_id = rustc_span::hygiene::register_local_expn_id(data, hash);
|
||||
|
||||
#[cfg(debug_assertions)]
|
||||
{
|
||||
use rustc_data_structures::stable_hasher::{HashStable, StableHasher};
|
||||
let mut hcx = decoder.tcx.create_stable_hashing_context();
|
||||
let mut hasher = StableHasher::new();
|
||||
hcx.while_hashing_spans(true, |hcx| {
|
||||
expn_id.expn_data().hash_stable(hcx, &mut hasher)
|
||||
});
|
||||
let local_hash: u64 = hasher.finish();
|
||||
debug_assert_eq!(hash.local_hash(), local_hash);
|
||||
}
|
||||
|
||||
expn_id
|
||||
} else {
|
||||
let index_guess = decoder.foreign_expn_data[&hash];
|
||||
decoder.tcx.cstore_untracked().expn_hash_to_expn_id(
|
||||
|
@ -675,16 +689,7 @@ impl<'a, 'tcx> Decodable<CacheDecoder<'a, 'tcx>> for ExpnId {
|
|||
)
|
||||
};
|
||||
|
||||
#[cfg(debug_assertions)]
|
||||
{
|
||||
use rustc_data_structures::stable_hasher::{HashStable, StableHasher};
|
||||
let mut hcx = decoder.tcx.create_stable_hashing_context();
|
||||
let mut hasher = StableHasher::new();
|
||||
hcx.while_hashing_spans(true, |hcx| expn_id.expn_data().hash_stable(hcx, &mut hasher));
|
||||
let local_hash: u64 = hasher.finish();
|
||||
debug_assert_eq!(hash.local_hash(), local_hash);
|
||||
}
|
||||
|
||||
debug_assert_eq!(expn_id.krate, krate);
|
||||
Ok(expn_id)
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue