about summary refs log tree commit diff
path: root/compiler/rustc_span/src/lib.rs
diff options
context:
space:
mode:
authorAaron Hill <aa1ronham@gmail.com>2021-01-03 10:09:32 -0500
committerAaron Hill <aa1ronham@gmail.com>2021-01-13 15:20:29 -0500
commit482a67d20f3c7059c33368df424f781585ead7cc (patch)
tree18062afb585364430c33ada59740403a208a3198 /compiler/rustc_span/src/lib.rs
parentfd2df74902fa98bcb71f85fd548c3eb399e6a96a (diff)
downloadrust-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.rs3
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;
         }