diff options
| author | Aaron Hill <aa1ronham@gmail.com> | 2021-01-03 10:09:32 -0500 |
|---|---|---|
| committer | Aaron Hill <aa1ronham@gmail.com> | 2021-01-13 15:20:29 -0500 |
| commit | 482a67d20f3c7059c33368df424f781585ead7cc (patch) | |
| tree | 18062afb585364430c33ada59740403a208a3198 /compiler/rustc_span/src/lib.rs | |
| parent | fd2df74902fa98bcb71f85fd548c3eb399e6a96a (diff) | |
| download | rust-482a67d20f3c7059c33368df424f781585ead7cc.tar.gz rust-482a67d20f3c7059c33368df424f781585ead7cc.zip | |
Properly handle `SyntaxContext` of dummy spans in incr comp
Fixes #80336 Due to macro expansion, we may end up with spans with an invalid location and non-root `SyntaxContext`. This commits preserves the `SyntaxContext` of such spans in the incremental cache, and ensures that we always hash the `SyntaxContext` when computing the `Fingerprint` of a `Span` Previously, we would discard the `SyntaxContext` during serialization to the incremental cache, causing the span's `Fingerprint` to change across compilation sessions.
Diffstat (limited to 'compiler/rustc_span/src/lib.rs')
| -rw-r--r-- | compiler/rustc_span/src/lib.rs | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/compiler/rustc_span/src/lib.rs b/compiler/rustc_span/src/lib.rs index f0f9f940446..50cb1555486 100644 --- a/compiler/rustc_span/src/lib.rs +++ b/compiler/rustc_span/src/lib.rs @@ -1899,8 +1899,9 @@ where return; } - if *self == DUMMY_SP { + if self.is_dummy() { Hash::hash(&TAG_INVALID_SPAN, hasher); + self.ctxt().hash_stable(ctx, hasher); return; } |
