Skip to content

Commit

Permalink
Properly encode spans with a dummy location and non-root SyntaxContext
Browse files Browse the repository at this point in the history
Previously, we would throw away the `SyntaxContext` of any span with a
dummy location during metadata encoding. This commit makes metadata Span
encoding consistent with incr-cache Span encoding - an 'invalid span'
tag is only used when it doesn't lose any information.
  • Loading branch information
Aaron1011 committed Sep 13, 2020
1 parent 498dab0 commit a67d248
Show file tree
Hide file tree
Showing 11 changed files with 160 additions and 158 deletions.
2 changes: 1 addition & 1 deletion compiler/rustc_metadata/src/rmeta/encoder.rs
Expand Up @@ -162,7 +162,7 @@ impl<'a, 'tcx> Encodable<EncodeContext<'a, 'tcx>> for ExpnId {

impl<'a, 'tcx> Encodable<EncodeContext<'a, 'tcx>> for Span {
fn encode(&self, s: &mut EncodeContext<'a, 'tcx>) -> opaque::EncodeResult {
if self.is_dummy() {
if *self == rustc_span::DUMMY_SP {
return TAG_INVALID_SPAN.encode(s);
}

Expand Down
44 changes: 22 additions & 22 deletions src/test/ui/proc-macro/capture-macro-rules-invoke.stdout
Expand Up @@ -8,7 +8,7 @@ PRINT-BANG INPUT (DEBUG): TokenStream [
span: $DIR/capture-macro-rules-invoke.rs:36:24: 36:28 (#0),
},
],
span: $DIR/capture-macro-rules-invoke.rs:21:21: 21:26 (#3),
span: $DIR/capture-macro-rules-invoke.rs:21:21: 21:26 (#4),
},
]
PRINT-BANG INPUT (DISPLAY): 1 + 1, { "a" }, let a = 1;, String, my_name, 'a, my_val = 30,
Expand Down Expand Up @@ -37,12 +37,12 @@ PRINT-BANG INPUT (DEBUG): TokenStream [
span: $DIR/capture-macro-rules-invoke.rs:38:17: 38:18 (#0),
},
],
span: $DIR/capture-macro-rules-invoke.rs:14:29: 14:34 (#7),
span: $DIR/capture-macro-rules-invoke.rs:14:29: 14:34 (#8),
},
Punct {
ch: ',',
spacing: Alone,
span: $DIR/capture-macro-rules-invoke.rs:14:34: 14:35 (#7),
span: $DIR/capture-macro-rules-invoke.rs:14:34: 14:35 (#8),
},
Group {
delimiter: None,
Expand All @@ -60,12 +60,12 @@ PRINT-BANG INPUT (DEBUG): TokenStream [
span: $DIR/capture-macro-rules-invoke.rs:39:13: 39:20 (#0),
},
],
span: $DIR/capture-macro-rules-invoke.rs:14:36: 14:42 (#7),
span: $DIR/capture-macro-rules-invoke.rs:14:36: 14:42 (#8),
},
Punct {
ch: ',',
spacing: Alone,
span: $DIR/capture-macro-rules-invoke.rs:14:42: 14:43 (#7),
span: $DIR/capture-macro-rules-invoke.rs:14:42: 14:43 (#8),
},
Group {
delimiter: None,
Expand All @@ -90,12 +90,12 @@ PRINT-BANG INPUT (DEBUG): TokenStream [
span: $DIR/capture-macro-rules-invoke.rs:40:21: 40:22 (#0),
},
],
span: $DIR/capture-macro-rules-invoke.rs:14:44: 14:49 (#7),
span: $DIR/capture-macro-rules-invoke.rs:14:44: 14:49 (#8),
},
Punct {
ch: ',',
spacing: Alone,
span: $DIR/capture-macro-rules-invoke.rs:14:49: 14:50 (#7),
span: $DIR/capture-macro-rules-invoke.rs:14:49: 14:50 (#8),
},
Group {
delimiter: None,
Expand All @@ -105,12 +105,12 @@ PRINT-BANG INPUT (DEBUG): TokenStream [
span: $DIR/capture-macro-rules-invoke.rs:41:13: 41:19 (#0),
},
],
span: $DIR/capture-macro-rules-invoke.rs:14:51: 14:54 (#7),
span: $DIR/capture-macro-rules-invoke.rs:14:51: 14:54 (#8),
},
Punct {
ch: ',',
spacing: Alone,
span: $DIR/capture-macro-rules-invoke.rs:14:54: 14:55 (#7),
span: $DIR/capture-macro-rules-invoke.rs:14:54: 14:55 (#8),
},
Group {
delimiter: None,
Expand All @@ -120,12 +120,12 @@ PRINT-BANG INPUT (DEBUG): TokenStream [
span: $DIR/capture-macro-rules-invoke.rs:42:13: 42:20 (#0),
},
],
span: $DIR/capture-macro-rules-invoke.rs:14:56: 14:62 (#7),
span: $DIR/capture-macro-rules-invoke.rs:14:56: 14:62 (#8),
},
Punct {
ch: ',',
spacing: Alone,
span: $DIR/capture-macro-rules-invoke.rs:14:62: 14:63 (#7),
span: $DIR/capture-macro-rules-invoke.rs:14:62: 14:63 (#8),
},
Group {
delimiter: None,
Expand All @@ -140,12 +140,12 @@ PRINT-BANG INPUT (DEBUG): TokenStream [
span: $DIR/capture-macro-rules-invoke.rs:43:13: 43:15 (#0),
},
],
span: $DIR/capture-macro-rules-invoke.rs:15:29: 15:38 (#7),
span: $DIR/capture-macro-rules-invoke.rs:15:29: 15:38 (#8),
},
Punct {
ch: ',',
spacing: Alone,
span: $DIR/capture-macro-rules-invoke.rs:15:38: 15:39 (#7),
span: $DIR/capture-macro-rules-invoke.rs:15:38: 15:39 (#8),
},
Group {
delimiter: None,
Expand All @@ -166,12 +166,12 @@ PRINT-BANG INPUT (DEBUG): TokenStream [
span: $DIR/capture-macro-rules-invoke.rs:44:22: 44:24 (#0),
},
],
span: $DIR/capture-macro-rules-invoke.rs:15:40: 15:45 (#7),
span: $DIR/capture-macro-rules-invoke.rs:15:40: 15:45 (#8),
},
Punct {
ch: ',',
spacing: Alone,
span: $DIR/capture-macro-rules-invoke.rs:15:45: 15:46 (#7),
span: $DIR/capture-macro-rules-invoke.rs:15:45: 15:46 (#8),
},
Group {
delimiter: None,
Expand Down Expand Up @@ -209,12 +209,12 @@ PRINT-BANG INPUT (DEBUG): TokenStream [
span: $DIR/capture-macro-rules-invoke.rs:45:26: 45:32 (#0),
},
],
span: $DIR/capture-macro-rules-invoke.rs:15:47: 15:52 (#7),
span: $DIR/capture-macro-rules-invoke.rs:15:47: 15:52 (#8),
},
Punct {
ch: ',',
spacing: Alone,
span: $DIR/capture-macro-rules-invoke.rs:15:52: 15:53 (#7),
span: $DIR/capture-macro-rules-invoke.rs:15:52: 15:53 (#8),
},
Group {
delimiter: None,
Expand Down Expand Up @@ -252,12 +252,12 @@ PRINT-BANG INPUT (DEBUG): TokenStream [
span: $DIR/capture-macro-rules-invoke.rs:46:16: 46:31 (#0),
},
],
span: $DIR/capture-macro-rules-invoke.rs:15:54: 15:58 (#7),
span: $DIR/capture-macro-rules-invoke.rs:15:54: 15:58 (#8),
},
Punct {
ch: ',',
spacing: Alone,
span: $DIR/capture-macro-rules-invoke.rs:15:58: 15:59 (#7),
span: $DIR/capture-macro-rules-invoke.rs:15:58: 15:59 (#8),
},
Group {
delimiter: Bracket,
Expand All @@ -280,7 +280,7 @@ PRINT-BANG INPUT (DEBUG): TokenStream [
Punct {
ch: ',',
spacing: Alone,
span: $DIR/capture-macro-rules-invoke.rs:15:63: 15:64 (#7),
span: $DIR/capture-macro-rules-invoke.rs:15:63: 15:64 (#8),
},
Group {
delimiter: None,
Expand All @@ -297,7 +297,7 @@ PRINT-BANG INPUT (DEBUG): TokenStream [
span: $DIR/capture-macro-rules-invoke.rs:48:14: 48:16 (#0),
},
],
span: $DIR/capture-macro-rules-invoke.rs:15:65: 15:69 (#7),
span: $DIR/capture-macro-rules-invoke.rs:15:65: 15:69 (#8),
},
]
PRINT-BANG INPUT (DISPLAY): (a, b)
Expand Down Expand Up @@ -325,6 +325,6 @@ PRINT-BANG INPUT (DEBUG): TokenStream [
span: $DIR/capture-macro-rules-invoke.rs:52:26: 52:32 (#0),
},
],
span: $DIR/capture-macro-rules-invoke.rs:27:21: 27:25 (#11),
span: $DIR/capture-macro-rules-invoke.rs:27:21: 27:25 (#12),
},
]
32 changes: 16 additions & 16 deletions src/test/ui/proc-macro/dollar-crate-issue-57089.stdout
Expand Up @@ -2,79 +2,79 @@ PRINT-BANG INPUT (DISPLAY): struct M($crate :: S) ;
PRINT-BANG INPUT (DEBUG): TokenStream [
Ident {
ident: "struct",
span: $DIR/dollar-crate-issue-57089.rs:17:13: 17:19 (#3),
span: $DIR/dollar-crate-issue-57089.rs:17:13: 17:19 (#4),
},
Ident {
ident: "M",
span: $DIR/dollar-crate-issue-57089.rs:17:20: 17:21 (#3),
span: $DIR/dollar-crate-issue-57089.rs:17:20: 17:21 (#4),
},
Group {
delimiter: Parenthesis,
stream: TokenStream [
Ident {
ident: "$crate",
span: $DIR/dollar-crate-issue-57089.rs:17:22: 17:28 (#3),
span: $DIR/dollar-crate-issue-57089.rs:17:22: 17:28 (#4),
},
Punct {
ch: ':',
spacing: Joint,
span: $DIR/dollar-crate-issue-57089.rs:17:28: 17:30 (#3),
span: $DIR/dollar-crate-issue-57089.rs:17:28: 17:30 (#4),
},
Punct {
ch: ':',
spacing: Alone,
span: $DIR/dollar-crate-issue-57089.rs:17:28: 17:30 (#3),
span: $DIR/dollar-crate-issue-57089.rs:17:28: 17:30 (#4),
},
Ident {
ident: "S",
span: $DIR/dollar-crate-issue-57089.rs:17:30: 17:31 (#3),
span: $DIR/dollar-crate-issue-57089.rs:17:30: 17:31 (#4),
},
],
span: $DIR/dollar-crate-issue-57089.rs:17:21: 17:32 (#3),
span: $DIR/dollar-crate-issue-57089.rs:17:21: 17:32 (#4),
},
Punct {
ch: ';',
spacing: Alone,
span: $DIR/dollar-crate-issue-57089.rs:17:32: 17:33 (#3),
span: $DIR/dollar-crate-issue-57089.rs:17:32: 17:33 (#4),
},
]
PRINT-ATTR INPUT (DISPLAY): struct A($crate :: S) ;
PRINT-ATTR INPUT (DEBUG): TokenStream [
Ident {
ident: "struct",
span: $DIR/dollar-crate-issue-57089.rs:21:9: 21:15 (#3),
span: $DIR/dollar-crate-issue-57089.rs:21:9: 21:15 (#4),
},
Ident {
ident: "A",
span: $DIR/dollar-crate-issue-57089.rs:21:16: 21:17 (#3),
span: $DIR/dollar-crate-issue-57089.rs:21:16: 21:17 (#4),
},
Group {
delimiter: Parenthesis,
stream: TokenStream [
Ident {
ident: "$crate",
span: $DIR/dollar-crate-issue-57089.rs:21:18: 21:24 (#3),
span: $DIR/dollar-crate-issue-57089.rs:21:18: 21:24 (#4),
},
Punct {
ch: ':',
spacing: Joint,
span: $DIR/dollar-crate-issue-57089.rs:21:24: 21:26 (#3),
span: $DIR/dollar-crate-issue-57089.rs:21:24: 21:26 (#4),
},
Punct {
ch: ':',
spacing: Alone,
span: $DIR/dollar-crate-issue-57089.rs:21:24: 21:26 (#3),
span: $DIR/dollar-crate-issue-57089.rs:21:24: 21:26 (#4),
},
Ident {
ident: "S",
span: $DIR/dollar-crate-issue-57089.rs:21:26: 21:27 (#3),
span: $DIR/dollar-crate-issue-57089.rs:21:26: 21:27 (#4),
},
],
span: $DIR/dollar-crate-issue-57089.rs:21:17: 21:28 (#3),
span: $DIR/dollar-crate-issue-57089.rs:21:17: 21:28 (#4),
},
Punct {
ch: ';',
spacing: Alone,
span: $DIR/dollar-crate-issue-57089.rs:21:28: 21:29 (#3),
span: $DIR/dollar-crate-issue-57089.rs:21:28: 21:29 (#4),
},
]

0 comments on commit a67d248

Please sign in to comment.