Skip to content

Commit b6c8455

Browse files
committed
Auto merge of rust-lang#76658 - Aaron1011:fix/encode-dummy-loc-span, r=lcnr
Properly encode spans with a dummy location and non-root `SyntaxContext` 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.
2 parents 4e48010 + a67d248 commit b6c8455

11 files changed

+160
-158
lines changed

compiler/rustc_metadata/src/rmeta/encoder.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -162,7 +162,7 @@ impl<'a, 'tcx> Encodable<EncodeContext<'a, 'tcx>> for ExpnId {
162162

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

src/test/ui/proc-macro/capture-macro-rules-invoke.stdout

+22-22
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ PRINT-BANG INPUT (DEBUG): TokenStream [
88
span: $DIR/capture-macro-rules-invoke.rs:36:24: 36:28 (#0),
99
},
1010
],
11-
span: $DIR/capture-macro-rules-invoke.rs:21:21: 21:26 (#3),
11+
span: $DIR/capture-macro-rules-invoke.rs:21:21: 21:26 (#4),
1212
},
1313
]
1414
PRINT-BANG INPUT (DISPLAY): 1 + 1, { "a" }, let a = 1;, String, my_name, 'a, my_val = 30,
@@ -37,12 +37,12 @@ PRINT-BANG INPUT (DEBUG): TokenStream [
3737
span: $DIR/capture-macro-rules-invoke.rs:38:17: 38:18 (#0),
3838
},
3939
],
40-
span: $DIR/capture-macro-rules-invoke.rs:14:29: 14:34 (#7),
40+
span: $DIR/capture-macro-rules-invoke.rs:14:29: 14:34 (#8),
4141
},
4242
Punct {
4343
ch: ',',
4444
spacing: Alone,
45-
span: $DIR/capture-macro-rules-invoke.rs:14:34: 14:35 (#7),
45+
span: $DIR/capture-macro-rules-invoke.rs:14:34: 14:35 (#8),
4646
},
4747
Group {
4848
delimiter: None,
@@ -60,12 +60,12 @@ PRINT-BANG INPUT (DEBUG): TokenStream [
6060
span: $DIR/capture-macro-rules-invoke.rs:39:13: 39:20 (#0),
6161
},
6262
],
63-
span: $DIR/capture-macro-rules-invoke.rs:14:36: 14:42 (#7),
63+
span: $DIR/capture-macro-rules-invoke.rs:14:36: 14:42 (#8),
6464
},
6565
Punct {
6666
ch: ',',
6767
spacing: Alone,
68-
span: $DIR/capture-macro-rules-invoke.rs:14:42: 14:43 (#7),
68+
span: $DIR/capture-macro-rules-invoke.rs:14:42: 14:43 (#8),
6969
},
7070
Group {
7171
delimiter: None,
@@ -90,12 +90,12 @@ PRINT-BANG INPUT (DEBUG): TokenStream [
9090
span: $DIR/capture-macro-rules-invoke.rs:40:21: 40:22 (#0),
9191
},
9292
],
93-
span: $DIR/capture-macro-rules-invoke.rs:14:44: 14:49 (#7),
93+
span: $DIR/capture-macro-rules-invoke.rs:14:44: 14:49 (#8),
9494
},
9595
Punct {
9696
ch: ',',
9797
spacing: Alone,
98-
span: $DIR/capture-macro-rules-invoke.rs:14:49: 14:50 (#7),
98+
span: $DIR/capture-macro-rules-invoke.rs:14:49: 14:50 (#8),
9999
},
100100
Group {
101101
delimiter: None,
@@ -105,12 +105,12 @@ PRINT-BANG INPUT (DEBUG): TokenStream [
105105
span: $DIR/capture-macro-rules-invoke.rs:41:13: 41:19 (#0),
106106
},
107107
],
108-
span: $DIR/capture-macro-rules-invoke.rs:14:51: 14:54 (#7),
108+
span: $DIR/capture-macro-rules-invoke.rs:14:51: 14:54 (#8),
109109
},
110110
Punct {
111111
ch: ',',
112112
spacing: Alone,
113-
span: $DIR/capture-macro-rules-invoke.rs:14:54: 14:55 (#7),
113+
span: $DIR/capture-macro-rules-invoke.rs:14:54: 14:55 (#8),
114114
},
115115
Group {
116116
delimiter: None,
@@ -120,12 +120,12 @@ PRINT-BANG INPUT (DEBUG): TokenStream [
120120
span: $DIR/capture-macro-rules-invoke.rs:42:13: 42:20 (#0),
121121
},
122122
],
123-
span: $DIR/capture-macro-rules-invoke.rs:14:56: 14:62 (#7),
123+
span: $DIR/capture-macro-rules-invoke.rs:14:56: 14:62 (#8),
124124
},
125125
Punct {
126126
ch: ',',
127127
spacing: Alone,
128-
span: $DIR/capture-macro-rules-invoke.rs:14:62: 14:63 (#7),
128+
span: $DIR/capture-macro-rules-invoke.rs:14:62: 14:63 (#8),
129129
},
130130
Group {
131131
delimiter: None,
@@ -140,12 +140,12 @@ PRINT-BANG INPUT (DEBUG): TokenStream [
140140
span: $DIR/capture-macro-rules-invoke.rs:43:13: 43:15 (#0),
141141
},
142142
],
143-
span: $DIR/capture-macro-rules-invoke.rs:15:29: 15:38 (#7),
143+
span: $DIR/capture-macro-rules-invoke.rs:15:29: 15:38 (#8),
144144
},
145145
Punct {
146146
ch: ',',
147147
spacing: Alone,
148-
span: $DIR/capture-macro-rules-invoke.rs:15:38: 15:39 (#7),
148+
span: $DIR/capture-macro-rules-invoke.rs:15:38: 15:39 (#8),
149149
},
150150
Group {
151151
delimiter: None,
@@ -166,12 +166,12 @@ PRINT-BANG INPUT (DEBUG): TokenStream [
166166
span: $DIR/capture-macro-rules-invoke.rs:44:22: 44:24 (#0),
167167
},
168168
],
169-
span: $DIR/capture-macro-rules-invoke.rs:15:40: 15:45 (#7),
169+
span: $DIR/capture-macro-rules-invoke.rs:15:40: 15:45 (#8),
170170
},
171171
Punct {
172172
ch: ',',
173173
spacing: Alone,
174-
span: $DIR/capture-macro-rules-invoke.rs:15:45: 15:46 (#7),
174+
span: $DIR/capture-macro-rules-invoke.rs:15:45: 15:46 (#8),
175175
},
176176
Group {
177177
delimiter: None,
@@ -209,12 +209,12 @@ PRINT-BANG INPUT (DEBUG): TokenStream [
209209
span: $DIR/capture-macro-rules-invoke.rs:45:26: 45:32 (#0),
210210
},
211211
],
212-
span: $DIR/capture-macro-rules-invoke.rs:15:47: 15:52 (#7),
212+
span: $DIR/capture-macro-rules-invoke.rs:15:47: 15:52 (#8),
213213
},
214214
Punct {
215215
ch: ',',
216216
spacing: Alone,
217-
span: $DIR/capture-macro-rules-invoke.rs:15:52: 15:53 (#7),
217+
span: $DIR/capture-macro-rules-invoke.rs:15:52: 15:53 (#8),
218218
},
219219
Group {
220220
delimiter: None,
@@ -252,12 +252,12 @@ PRINT-BANG INPUT (DEBUG): TokenStream [
252252
span: $DIR/capture-macro-rules-invoke.rs:46:16: 46:31 (#0),
253253
},
254254
],
255-
span: $DIR/capture-macro-rules-invoke.rs:15:54: 15:58 (#7),
255+
span: $DIR/capture-macro-rules-invoke.rs:15:54: 15:58 (#8),
256256
},
257257
Punct {
258258
ch: ',',
259259
spacing: Alone,
260-
span: $DIR/capture-macro-rules-invoke.rs:15:58: 15:59 (#7),
260+
span: $DIR/capture-macro-rules-invoke.rs:15:58: 15:59 (#8),
261261
},
262262
Group {
263263
delimiter: Bracket,
@@ -280,7 +280,7 @@ PRINT-BANG INPUT (DEBUG): TokenStream [
280280
Punct {
281281
ch: ',',
282282
spacing: Alone,
283-
span: $DIR/capture-macro-rules-invoke.rs:15:63: 15:64 (#7),
283+
span: $DIR/capture-macro-rules-invoke.rs:15:63: 15:64 (#8),
284284
},
285285
Group {
286286
delimiter: None,
@@ -297,7 +297,7 @@ PRINT-BANG INPUT (DEBUG): TokenStream [
297297
span: $DIR/capture-macro-rules-invoke.rs:48:14: 48:16 (#0),
298298
},
299299
],
300-
span: $DIR/capture-macro-rules-invoke.rs:15:65: 15:69 (#7),
300+
span: $DIR/capture-macro-rules-invoke.rs:15:65: 15:69 (#8),
301301
},
302302
]
303303
PRINT-BANG INPUT (DISPLAY): (a, b)
@@ -325,6 +325,6 @@ PRINT-BANG INPUT (DEBUG): TokenStream [
325325
span: $DIR/capture-macro-rules-invoke.rs:52:26: 52:32 (#0),
326326
},
327327
],
328-
span: $DIR/capture-macro-rules-invoke.rs:27:21: 27:25 (#11),
328+
span: $DIR/capture-macro-rules-invoke.rs:27:21: 27:25 (#12),
329329
},
330330
]

src/test/ui/proc-macro/dollar-crate-issue-57089.stdout

+16-16
Original file line numberDiff line numberDiff line change
@@ -2,79 +2,79 @@ PRINT-BANG INPUT (DISPLAY): struct M($crate :: S) ;
22
PRINT-BANG INPUT (DEBUG): TokenStream [
33
Ident {
44
ident: "struct",
5-
span: $DIR/dollar-crate-issue-57089.rs:17:13: 17:19 (#3),
5+
span: $DIR/dollar-crate-issue-57089.rs:17:13: 17:19 (#4),
66
},
77
Ident {
88
ident: "M",
9-
span: $DIR/dollar-crate-issue-57089.rs:17:20: 17:21 (#3),
9+
span: $DIR/dollar-crate-issue-57089.rs:17:20: 17:21 (#4),
1010
},
1111
Group {
1212
delimiter: Parenthesis,
1313
stream: TokenStream [
1414
Ident {
1515
ident: "$crate",
16-
span: $DIR/dollar-crate-issue-57089.rs:17:22: 17:28 (#3),
16+
span: $DIR/dollar-crate-issue-57089.rs:17:22: 17:28 (#4),
1717
},
1818
Punct {
1919
ch: ':',
2020
spacing: Joint,
21-
span: $DIR/dollar-crate-issue-57089.rs:17:28: 17:30 (#3),
21+
span: $DIR/dollar-crate-issue-57089.rs:17:28: 17:30 (#4),
2222
},
2323
Punct {
2424
ch: ':',
2525
spacing: Alone,
26-
span: $DIR/dollar-crate-issue-57089.rs:17:28: 17:30 (#3),
26+
span: $DIR/dollar-crate-issue-57089.rs:17:28: 17:30 (#4),
2727
},
2828
Ident {
2929
ident: "S",
30-
span: $DIR/dollar-crate-issue-57089.rs:17:30: 17:31 (#3),
30+
span: $DIR/dollar-crate-issue-57089.rs:17:30: 17:31 (#4),
3131
},
3232
],
33-
span: $DIR/dollar-crate-issue-57089.rs:17:21: 17:32 (#3),
33+
span: $DIR/dollar-crate-issue-57089.rs:17:21: 17:32 (#4),
3434
},
3535
Punct {
3636
ch: ';',
3737
spacing: Alone,
38-
span: $DIR/dollar-crate-issue-57089.rs:17:32: 17:33 (#3),
38+
span: $DIR/dollar-crate-issue-57089.rs:17:32: 17:33 (#4),
3939
},
4040
]
4141
PRINT-ATTR INPUT (DISPLAY): struct A($crate :: S) ;
4242
PRINT-ATTR INPUT (DEBUG): TokenStream [
4343
Ident {
4444
ident: "struct",
45-
span: $DIR/dollar-crate-issue-57089.rs:21:9: 21:15 (#3),
45+
span: $DIR/dollar-crate-issue-57089.rs:21:9: 21:15 (#4),
4646
},
4747
Ident {
4848
ident: "A",
49-
span: $DIR/dollar-crate-issue-57089.rs:21:16: 21:17 (#3),
49+
span: $DIR/dollar-crate-issue-57089.rs:21:16: 21:17 (#4),
5050
},
5151
Group {
5252
delimiter: Parenthesis,
5353
stream: TokenStream [
5454
Ident {
5555
ident: "$crate",
56-
span: $DIR/dollar-crate-issue-57089.rs:21:18: 21:24 (#3),
56+
span: $DIR/dollar-crate-issue-57089.rs:21:18: 21:24 (#4),
5757
},
5858
Punct {
5959
ch: ':',
6060
spacing: Joint,
61-
span: $DIR/dollar-crate-issue-57089.rs:21:24: 21:26 (#3),
61+
span: $DIR/dollar-crate-issue-57089.rs:21:24: 21:26 (#4),
6262
},
6363
Punct {
6464
ch: ':',
6565
spacing: Alone,
66-
span: $DIR/dollar-crate-issue-57089.rs:21:24: 21:26 (#3),
66+
span: $DIR/dollar-crate-issue-57089.rs:21:24: 21:26 (#4),
6767
},
6868
Ident {
6969
ident: "S",
70-
span: $DIR/dollar-crate-issue-57089.rs:21:26: 21:27 (#3),
70+
span: $DIR/dollar-crate-issue-57089.rs:21:26: 21:27 (#4),
7171
},
7272
],
73-
span: $DIR/dollar-crate-issue-57089.rs:21:17: 21:28 (#3),
73+
span: $DIR/dollar-crate-issue-57089.rs:21:17: 21:28 (#4),
7474
},
7575
Punct {
7676
ch: ';',
7777
spacing: Alone,
78-
span: $DIR/dollar-crate-issue-57089.rs:21:28: 21:29 (#3),
78+
span: $DIR/dollar-crate-issue-57089.rs:21:28: 21:29 (#4),
7979
},
8080
]

0 commit comments

Comments
 (0)