Skip to content

Commit 88dab8d

Browse files
committed
Improve spans when splitting multi-char operator tokens for proc macros.
1 parent 177b3d2 commit 88dab8d

14 files changed

+79
-67
lines changed

compiler/rustc_expand/src/proc_macro_server.rs

+14-2
Original file line numberDiff line numberDiff line change
@@ -115,8 +115,20 @@ impl FromInternal<(TokenStream, &mut Rustc<'_, '_>)> for Vec<TokenTree<TokenStre
115115
// before that get `joint = true`.
116116
let mut op = |s: &str| {
117117
assert!(s.is_ascii());
118-
trees.extend(s.bytes().enumerate().map(|(idx, ch)| {
119-
let is_final = idx == s.len() - 1;
118+
trees.extend(s.bytes().enumerate().map(|(i, ch)| {
119+
let is_final = i == s.len() - 1;
120+
// Split the token span into single chars. Unless the span
121+
// is an unusual one, e.g. due to proc macro expansion. We
122+
// determine this by assuming any span with a length that
123+
// matches the operator length is a normal one, and any
124+
// span with a different length is an unusual one.
125+
let span = if (span.hi() - span.lo()).to_usize() == s.len() {
126+
let lo = span.lo() + BytePos::from_usize(i);
127+
let hi = lo + BytePos::from_usize(1);
128+
span.with_lo(lo).with_hi(hi)
129+
} else {
130+
span
131+
};
120132
TokenTree::Punct(Punct { ch, joint: if is_final { joint } else { true }, span })
121133
}));
122134
};

src/test/ui/lint/redundant-semicolon/redundant-semi-proc-macro.stderr

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
TokenStream [Ident { ident: "fn", span: #0 bytes(198..200) }, Ident { ident: "span_preservation", span: #0 bytes(201..218) }, Group { delimiter: Parenthesis, stream: TokenStream [], span: #0 bytes(218..220) }, Group { delimiter: Brace, stream: TokenStream [Ident { ident: "let", span: #0 bytes(228..231) }, Ident { ident: "tst", span: #0 bytes(232..235) }, Punct { ch: '=', spacing: Alone, span: #0 bytes(236..237) }, Literal { kind: Integer, symbol: "123", suffix: None, span: #0 bytes(238..241) }, Punct { ch: ';', spacing: Joint, span: #0 bytes(241..242) }, Punct { ch: ';', spacing: Alone, span: #0 bytes(242..243) }, Ident { ident: "match", span: #0 bytes(289..294) }, Ident { ident: "tst", span: #0 bytes(295..298) }, Group { delimiter: Brace, stream: TokenStream [Literal { kind: Integer, symbol: "123", suffix: None, span: #0 bytes(483..486) }, Punct { ch: '=', spacing: Joint, span: #0 bytes(487..489) }, Punct { ch: '>', spacing: Alone, span: #0 bytes(487..489) }, Group { delimiter: Parenthesis, stream: TokenStream [], span: #0 bytes(490..492) }, Punct { ch: ',', spacing: Alone, span: #0 bytes(492..493) }, Ident { ident: "_", span: #0 bytes(502..503) }, Punct { ch: '=', spacing: Joint, span: #0 bytes(504..506) }, Punct { ch: '>', spacing: Alone, span: #0 bytes(504..506) }, Group { delimiter: Parenthesis, stream: TokenStream [], span: #0 bytes(507..509) }], span: #0 bytes(299..515) }, Punct { ch: ';', spacing: Joint, span: #0 bytes(515..516) }, Punct { ch: ';', spacing: Joint, span: #0 bytes(516..517) }, Punct { ch: ';', spacing: Alone, span: #0 bytes(517..518) }], span: #0 bytes(222..562) }]
1+
TokenStream [Ident { ident: "fn", span: #0 bytes(198..200) }, Ident { ident: "span_preservation", span: #0 bytes(201..218) }, Group { delimiter: Parenthesis, stream: TokenStream [], span: #0 bytes(218..220) }, Group { delimiter: Brace, stream: TokenStream [Ident { ident: "let", span: #0 bytes(228..231) }, Ident { ident: "tst", span: #0 bytes(232..235) }, Punct { ch: '=', spacing: Alone, span: #0 bytes(236..237) }, Literal { kind: Integer, symbol: "123", suffix: None, span: #0 bytes(238..241) }, Punct { ch: ';', spacing: Joint, span: #0 bytes(241..242) }, Punct { ch: ';', spacing: Alone, span: #0 bytes(242..243) }, Ident { ident: "match", span: #0 bytes(289..294) }, Ident { ident: "tst", span: #0 bytes(295..298) }, Group { delimiter: Brace, stream: TokenStream [Literal { kind: Integer, symbol: "123", suffix: None, span: #0 bytes(483..486) }, Punct { ch: '=', spacing: Joint, span: #0 bytes(487..488) }, Punct { ch: '>', spacing: Alone, span: #0 bytes(488..489) }, Group { delimiter: Parenthesis, stream: TokenStream [], span: #0 bytes(490..492) }, Punct { ch: ',', spacing: Alone, span: #0 bytes(492..493) }, Ident { ident: "_", span: #0 bytes(502..503) }, Punct { ch: '=', spacing: Joint, span: #0 bytes(504..505) }, Punct { ch: '>', spacing: Alone, span: #0 bytes(505..506) }, Group { delimiter: Parenthesis, stream: TokenStream [], span: #0 bytes(507..509) }], span: #0 bytes(299..515) }, Punct { ch: ';', spacing: Joint, span: #0 bytes(515..516) }, Punct { ch: ';', spacing: Joint, span: #0 bytes(516..517) }, Punct { ch: ';', spacing: Alone, span: #0 bytes(517..518) }], span: #0 bytes(222..562) }]
22
error: unnecessary trailing semicolon
33
--> $DIR/redundant-semi-proc-macro.rs:9:19
44
|

src/test/ui/proc-macro/attr-complex-fn.stdout

+2-2
Original file line numberDiff line numberDiff line change
@@ -53,12 +53,12 @@ PRINT-ATTR INPUT (DEBUG): TokenStream [
5353
Punct {
5454
ch: '>',
5555
spacing: Joint,
56-
span: $DIR/attr-complex-fn.rs:19:36: 19:38 (#0),
56+
span: $DIR/attr-complex-fn.rs:19:36: 19:37 (#0),
5757
},
5858
Punct {
5959
ch: '>',
6060
spacing: Joint,
61-
span: $DIR/attr-complex-fn.rs:19:36: 19:38 (#0),
61+
span: $DIR/attr-complex-fn.rs:19:37: 19:38 (#0),
6262
},
6363
Punct {
6464
ch: '>',

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

+6-6
Original file line numberDiff line numberDiff line change
@@ -177,12 +177,12 @@ PRINT-BANG INPUT (DEBUG): TokenStream [
177177
Punct {
178178
ch: ':',
179179
spacing: Joint,
180-
span: $DIR/capture-macro-rules-invoke.rs:45:16: 45:18 (#0),
180+
span: $DIR/capture-macro-rules-invoke.rs:45:16: 45:17 (#0),
181181
},
182182
Punct {
183183
ch: ':',
184184
spacing: Alone,
185-
span: $DIR/capture-macro-rules-invoke.rs:45:16: 45:18 (#0),
185+
span: $DIR/capture-macro-rules-invoke.rs:45:17: 45:18 (#0),
186186
},
187187
Ident {
188188
ident: "option",
@@ -191,12 +191,12 @@ PRINT-BANG INPUT (DEBUG): TokenStream [
191191
Punct {
192192
ch: ':',
193193
spacing: Joint,
194-
span: $DIR/capture-macro-rules-invoke.rs:45:24: 45:26 (#0),
194+
span: $DIR/capture-macro-rules-invoke.rs:45:24: 45:25 (#0),
195195
},
196196
Punct {
197197
ch: ':',
198198
spacing: Alone,
199-
span: $DIR/capture-macro-rules-invoke.rs:45:24: 45:26 (#0),
199+
span: $DIR/capture-macro-rules-invoke.rs:45:25: 45:26 (#0),
200200
},
201201
Ident {
202202
ident: "Option",
@@ -231,12 +231,12 @@ PRINT-BANG INPUT (DEBUG): TokenStream [
231231
Punct {
232232
ch: ':',
233233
spacing: Joint,
234-
span: $DIR/capture-macro-rules-invoke.rs:46:24: 46:26 (#0),
234+
span: $DIR/capture-macro-rules-invoke.rs:46:24: 46:25 (#0),
235235
},
236236
Punct {
237237
ch: ':',
238238
spacing: Alone,
239-
span: $DIR/capture-macro-rules-invoke.rs:46:24: 46:26 (#0),
239+
span: $DIR/capture-macro-rules-invoke.rs:46:25: 46:26 (#0),
240240
},
241241
Ident {
242242
ident: "path",

src/test/ui/proc-macro/debug/dump-debug-span-debug.stderr

+15-15
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
TokenStream [Ident { ident: "ident", span: $DIR/dump-debug-span-debug.rs:10:5: 10:10 (#0) }, Ident { ident: "r#ident", span: $DIR/dump-debug-span-debug.rs:11:5: 11:12 (#0) }, Punct { ch: ',', spacing: Alone, span: $DIR/dump-debug-span-debug.rs:12:5: 12:6 (#0) }, Punct { ch: '&', spacing: Joint, span: $DIR/dump-debug-span-debug.rs:13:5: 13:7 (#0) }, Punct { ch: '&', spacing: Alone, span: $DIR/dump-debug-span-debug.rs:13:5: 13:7 (#0) }, Punct { ch: '|', spacing: Joint, span: $DIR/dump-debug-span-debug.rs:14:5: 14:7 (#0) }, Punct { ch: '|', spacing: Joint, span: $DIR/dump-debug-span-debug.rs:14:5: 14:7 (#0) }, Punct { ch: '>', spacing: Alone, span: $DIR/dump-debug-span-debug.rs:14:7: 14:8 (#0) }, Punct { ch: '|', spacing: Joint, span: $DIR/dump-debug-span-debug.rs:15:5: 15:7 (#0) }, Punct { ch: '|', spacing: Joint, span: $DIR/dump-debug-span-debug.rs:15:5: 15:7 (#0) }, Punct { ch: '<', spacing: Joint, span: $DIR/dump-debug-span-debug.rs:15:7: 15:9 (#0) }, Punct { ch: '<', spacing: Alone, span: $DIR/dump-debug-span-debug.rs:15:7: 15:9 (#0) }, Punct { ch: '.', spacing: Joint, span: $DIR/dump-debug-span-debug.rs:16:5: 16:8 (#0) }, Punct { ch: '.', spacing: Joint, span: $DIR/dump-debug-span-debug.rs:16:5: 16:8 (#0) }, Punct { ch: '=', spacing: Alone, span: $DIR/dump-debug-span-debug.rs:16:5: 16:8 (#0) }, Punct { ch: '<', spacing: Joint, span: $DIR/dump-debug-span-debug.rs:17:5: 17:8 (#0) }, Punct { ch: '<', spacing: Joint, span: $DIR/dump-debug-span-debug.rs:17:5: 17:8 (#0) }, Punct { ch: '=', spacing: Joint, span: $DIR/dump-debug-span-debug.rs:17:5: 17:8 (#0) }, Punct { ch: '!', spacing: Alone, span: $DIR/dump-debug-span-debug.rs:17:8: 17:9 (#0) }, Group { delimiter: Parenthesis, stream: TokenStream [], span: $DIR/dump-debug-span-debug.rs:18:5: 18:7 (#0) }, Group { delimiter: Bracket, stream: TokenStream [Ident { ident: "_", span: $DIR/dump-debug-span-debug.rs:19:6: 19:7 (#0) }], span: $DIR/dump-debug-span-debug.rs:19:5: 19:8 (#0) }, Literal { kind: Integer, symbol: "0", suffix: None, span: $DIR/dump-debug-span-debug.rs:22:5: 22:6 (#0) }, Literal { kind: Float, symbol: "1.0", suffix: None, span: $DIR/dump-debug-span-debug.rs:23:5: 23:8 (#0) }, Literal { kind: Str, symbol: "S", suffix: None, span: $DIR/dump-debug-span-debug.rs:24:5: 24:8 (#0) }, Literal { kind: ByteStr, symbol: "B", suffix: None, span: $DIR/dump-debug-span-debug.rs:25:5: 25:9 (#0) }, Literal { kind: StrRaw(0), symbol: "R", suffix: None, span: $DIR/dump-debug-span-debug.rs:26:5: 26:9 (#0) }, Literal { kind: StrRaw(2), symbol: "R", suffix: None, span: $DIR/dump-debug-span-debug.rs:27:5: 27:13 (#0) }, Literal { kind: ByteStrRaw(0), symbol: "BR", suffix: None, span: $DIR/dump-debug-span-debug.rs:28:5: 28:11 (#0) }, Literal { kind: ByteStrRaw(2), symbol: "BR", suffix: None, span: $DIR/dump-debug-span-debug.rs:29:5: 29:15 (#0) }, Literal { kind: Char, symbol: "C", suffix: None, span: $DIR/dump-debug-span-debug.rs:30:5: 30:8 (#0) }, Literal { kind: Byte, symbol: "B", suffix: None, span: $DIR/dump-debug-span-debug.rs:31:5: 31:9 (#0) }, Literal { kind: Integer, symbol: "0", suffix: Some("q"), span: $DIR/dump-debug-span-debug.rs:34:5: 34:7 (#0) }, Literal { kind: Float, symbol: "1.0", suffix: Some("q"), span: $DIR/dump-debug-span-debug.rs:35:5: 35:9 (#0) }, Literal { kind: Str, symbol: "S", suffix: Some("q"), span: $DIR/dump-debug-span-debug.rs:36:5: 36:9 (#0) }, Literal { kind: ByteStr, symbol: "B", suffix: Some("q"), span: $DIR/dump-debug-span-debug.rs:37:5: 37:10 (#0) }, Literal { kind: StrRaw(0), symbol: "R", suffix: Some("q"), span: $DIR/dump-debug-span-debug.rs:38:5: 38:10 (#0) }, Literal { kind: StrRaw(2), symbol: "R", suffix: Some("q"), span: $DIR/dump-debug-span-debug.rs:39:5: 39:14 (#0) }, Literal { kind: ByteStrRaw(0), symbol: "BR", suffix: Some("q"), span: $DIR/dump-debug-span-debug.rs:40:5: 40:12 (#0) }, Literal { kind: ByteStrRaw(2), symbol: "BR", suffix: Some("q"), span: $DIR/dump-debug-span-debug.rs:41:5: 41:16 (#0) }, Literal { kind: Char, symbol: "C", suffix: Some("q"), span: $DIR/dump-debug-span-debug.rs:42:5: 42:9 (#0) }, Literal { kind: Byte, symbol: "B", suffix: Some("q"), span: $DIR/dump-debug-span-debug.rs:43:5: 43:10 (#0) }]
1+
TokenStream [Ident { ident: "ident", span: $DIR/dump-debug-span-debug.rs:10:5: 10:10 (#0) }, Ident { ident: "r#ident", span: $DIR/dump-debug-span-debug.rs:11:5: 11:12 (#0) }, Punct { ch: ',', spacing: Alone, span: $DIR/dump-debug-span-debug.rs:12:5: 12:6 (#0) }, Punct { ch: '&', spacing: Joint, span: $DIR/dump-debug-span-debug.rs:13:5: 13:6 (#0) }, Punct { ch: '&', spacing: Alone, span: $DIR/dump-debug-span-debug.rs:13:6: 13:7 (#0) }, Punct { ch: '|', spacing: Joint, span: $DIR/dump-debug-span-debug.rs:14:5: 14:6 (#0) }, Punct { ch: '|', spacing: Joint, span: $DIR/dump-debug-span-debug.rs:14:6: 14:7 (#0) }, Punct { ch: '>', spacing: Alone, span: $DIR/dump-debug-span-debug.rs:14:7: 14:8 (#0) }, Punct { ch: '|', spacing: Joint, span: $DIR/dump-debug-span-debug.rs:15:5: 15:6 (#0) }, Punct { ch: '|', spacing: Joint, span: $DIR/dump-debug-span-debug.rs:15:6: 15:7 (#0) }, Punct { ch: '<', spacing: Joint, span: $DIR/dump-debug-span-debug.rs:15:7: 15:8 (#0) }, Punct { ch: '<', spacing: Alone, span: $DIR/dump-debug-span-debug.rs:15:8: 15:9 (#0) }, Punct { ch: '.', spacing: Joint, span: $DIR/dump-debug-span-debug.rs:16:5: 16:6 (#0) }, Punct { ch: '.', spacing: Joint, span: $DIR/dump-debug-span-debug.rs:16:6: 16:7 (#0) }, Punct { ch: '=', spacing: Alone, span: $DIR/dump-debug-span-debug.rs:16:7: 16:8 (#0) }, Punct { ch: '<', spacing: Joint, span: $DIR/dump-debug-span-debug.rs:17:5: 17:6 (#0) }, Punct { ch: '<', spacing: Joint, span: $DIR/dump-debug-span-debug.rs:17:6: 17:7 (#0) }, Punct { ch: '=', spacing: Joint, span: $DIR/dump-debug-span-debug.rs:17:7: 17:8 (#0) }, Punct { ch: '!', spacing: Alone, span: $DIR/dump-debug-span-debug.rs:17:8: 17:9 (#0) }, Group { delimiter: Parenthesis, stream: TokenStream [], span: $DIR/dump-debug-span-debug.rs:18:5: 18:7 (#0) }, Group { delimiter: Bracket, stream: TokenStream [Ident { ident: "_", span: $DIR/dump-debug-span-debug.rs:19:6: 19:7 (#0) }], span: $DIR/dump-debug-span-debug.rs:19:5: 19:8 (#0) }, Literal { kind: Integer, symbol: "0", suffix: None, span: $DIR/dump-debug-span-debug.rs:22:5: 22:6 (#0) }, Literal { kind: Float, symbol: "1.0", suffix: None, span: $DIR/dump-debug-span-debug.rs:23:5: 23:8 (#0) }, Literal { kind: Str, symbol: "S", suffix: None, span: $DIR/dump-debug-span-debug.rs:24:5: 24:8 (#0) }, Literal { kind: ByteStr, symbol: "B", suffix: None, span: $DIR/dump-debug-span-debug.rs:25:5: 25:9 (#0) }, Literal { kind: StrRaw(0), symbol: "R", suffix: None, span: $DIR/dump-debug-span-debug.rs:26:5: 26:9 (#0) }, Literal { kind: StrRaw(2), symbol: "R", suffix: None, span: $DIR/dump-debug-span-debug.rs:27:5: 27:13 (#0) }, Literal { kind: ByteStrRaw(0), symbol: "BR", suffix: None, span: $DIR/dump-debug-span-debug.rs:28:5: 28:11 (#0) }, Literal { kind: ByteStrRaw(2), symbol: "BR", suffix: None, span: $DIR/dump-debug-span-debug.rs:29:5: 29:15 (#0) }, Literal { kind: Char, symbol: "C", suffix: None, span: $DIR/dump-debug-span-debug.rs:30:5: 30:8 (#0) }, Literal { kind: Byte, symbol: "B", suffix: None, span: $DIR/dump-debug-span-debug.rs:31:5: 31:9 (#0) }, Literal { kind: Integer, symbol: "0", suffix: Some("q"), span: $DIR/dump-debug-span-debug.rs:34:5: 34:7 (#0) }, Literal { kind: Float, symbol: "1.0", suffix: Some("q"), span: $DIR/dump-debug-span-debug.rs:35:5: 35:9 (#0) }, Literal { kind: Str, symbol: "S", suffix: Some("q"), span: $DIR/dump-debug-span-debug.rs:36:5: 36:9 (#0) }, Literal { kind: ByteStr, symbol: "B", suffix: Some("q"), span: $DIR/dump-debug-span-debug.rs:37:5: 37:10 (#0) }, Literal { kind: StrRaw(0), symbol: "R", suffix: Some("q"), span: $DIR/dump-debug-span-debug.rs:38:5: 38:10 (#0) }, Literal { kind: StrRaw(2), symbol: "R", suffix: Some("q"), span: $DIR/dump-debug-span-debug.rs:39:5: 39:14 (#0) }, Literal { kind: ByteStrRaw(0), symbol: "BR", suffix: Some("q"), span: $DIR/dump-debug-span-debug.rs:40:5: 40:12 (#0) }, Literal { kind: ByteStrRaw(2), symbol: "BR", suffix: Some("q"), span: $DIR/dump-debug-span-debug.rs:41:5: 41:16 (#0) }, Literal { kind: Char, symbol: "C", suffix: Some("q"), span: $DIR/dump-debug-span-debug.rs:42:5: 42:9 (#0) }, Literal { kind: Byte, symbol: "B", suffix: Some("q"), span: $DIR/dump-debug-span-debug.rs:43:5: 43:10 (#0) }]
22
TokenStream [
33
Ident {
44
ident: "ident",
@@ -16,22 +16,22 @@ TokenStream [
1616
Punct {
1717
ch: '&',
1818
spacing: Joint,
19-
span: $DIR/dump-debug-span-debug.rs:13:5: 13:7 (#0),
19+
span: $DIR/dump-debug-span-debug.rs:13:5: 13:6 (#0),
2020
},
2121
Punct {
2222
ch: '&',
2323
spacing: Alone,
24-
span: $DIR/dump-debug-span-debug.rs:13:5: 13:7 (#0),
24+
span: $DIR/dump-debug-span-debug.rs:13:6: 13:7 (#0),
2525
},
2626
Punct {
2727
ch: '|',
2828
spacing: Joint,
29-
span: $DIR/dump-debug-span-debug.rs:14:5: 14:7 (#0),
29+
span: $DIR/dump-debug-span-debug.rs:14:5: 14:6 (#0),
3030
},
3131
Punct {
3232
ch: '|',
3333
spacing: Joint,
34-
span: $DIR/dump-debug-span-debug.rs:14:5: 14:7 (#0),
34+
span: $DIR/dump-debug-span-debug.rs:14:6: 14:7 (#0),
3535
},
3636
Punct {
3737
ch: '>',
@@ -41,52 +41,52 @@ TokenStream [
4141
Punct {
4242
ch: '|',
4343
spacing: Joint,
44-
span: $DIR/dump-debug-span-debug.rs:15:5: 15:7 (#0),
44+
span: $DIR/dump-debug-span-debug.rs:15:5: 15:6 (#0),
4545
},
4646
Punct {
4747
ch: '|',
4848
spacing: Joint,
49-
span: $DIR/dump-debug-span-debug.rs:15:5: 15:7 (#0),
49+
span: $DIR/dump-debug-span-debug.rs:15:6: 15:7 (#0),
5050
},
5151
Punct {
5252
ch: '<',
5353
spacing: Joint,
54-
span: $DIR/dump-debug-span-debug.rs:15:7: 15:9 (#0),
54+
span: $DIR/dump-debug-span-debug.rs:15:7: 15:8 (#0),
5555
},
5656
Punct {
5757
ch: '<',
5858
spacing: Alone,
59-
span: $DIR/dump-debug-span-debug.rs:15:7: 15:9 (#0),
59+
span: $DIR/dump-debug-span-debug.rs:15:8: 15:9 (#0),
6060
},
6161
Punct {
6262
ch: '.',
6363
spacing: Joint,
64-
span: $DIR/dump-debug-span-debug.rs:16:5: 16:8 (#0),
64+
span: $DIR/dump-debug-span-debug.rs:16:5: 16:6 (#0),
6565
},
6666
Punct {
6767
ch: '.',
6868
spacing: Joint,
69-
span: $DIR/dump-debug-span-debug.rs:16:5: 16:8 (#0),
69+
span: $DIR/dump-debug-span-debug.rs:16:6: 16:7 (#0),
7070
},
7171
Punct {
7272
ch: '=',
7373
spacing: Alone,
74-
span: $DIR/dump-debug-span-debug.rs:16:5: 16:8 (#0),
74+
span: $DIR/dump-debug-span-debug.rs:16:7: 16:8 (#0),
7575
},
7676
Punct {
7777
ch: '<',
7878
spacing: Joint,
79-
span: $DIR/dump-debug-span-debug.rs:17:5: 17:8 (#0),
79+
span: $DIR/dump-debug-span-debug.rs:17:5: 17:6 (#0),
8080
},
8181
Punct {
8282
ch: '<',
8383
spacing: Joint,
84-
span: $DIR/dump-debug-span-debug.rs:17:5: 17:8 (#0),
84+
span: $DIR/dump-debug-span-debug.rs:17:6: 17:7 (#0),
8585
},
8686
Punct {
8787
ch: '=',
8888
spacing: Joint,
89-
span: $DIR/dump-debug-span-debug.rs:17:5: 17:8 (#0),
89+
span: $DIR/dump-debug-span-debug.rs:17:7: 17:8 (#0),
9090
},
9191
Punct {
9292
ch: '!',

0 commit comments

Comments
 (0)