fix(rustc_parse): incorrect span information for macro block expr
Old error output: = note: this warning originates in the macro `foo` (in Nightly builds, run with -Z macro-backtrace for more info) help: wrap this expression in parentheses | 4 | break '_l $f(;) | ^ ^ New error output: = note: this warning originates in the macro `foo` (in Nightly builds, run with -Z macro-backtrace for more info) help: wrap this expression in parentheses | 4 | break '_l ($f); | ^ ^
This commit is contained in:
parent
926f069950
commit
d562848268
3 changed files with 36 additions and 1 deletions
|
@ -50,7 +50,7 @@ macro_rules! maybe_whole_expr {
|
||||||
let block = block.clone();
|
let block = block.clone();
|
||||||
$p.bump();
|
$p.bump();
|
||||||
return Ok($p.mk_expr(
|
return Ok($p.mk_expr(
|
||||||
$p.token.span,
|
$p.prev_token.span,
|
||||||
ExprKind::Block(block, None),
|
ExprKind::Block(block, None),
|
||||||
AttrVec::new(),
|
AttrVec::new(),
|
||||||
));
|
));
|
||||||
|
|
13
src/test/ui/parser/issue-87812.rs
Normal file
13
src/test/ui/parser/issue-87812.rs
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
#![deny(break_with_label_and_loop)]
|
||||||
|
|
||||||
|
macro_rules! foo {
|
||||||
|
( $f:block ) => {
|
||||||
|
'_l: loop {
|
||||||
|
break '_l $f; //~ERROR
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
fn main() {
|
||||||
|
let x = foo!({ 3 });
|
||||||
|
}
|
22
src/test/ui/parser/issue-87812.stderr
Normal file
22
src/test/ui/parser/issue-87812.stderr
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
error: this labeled break expression is easy to confuse with an unlabeled break with a labeled value expression
|
||||||
|
--> $DIR/issue-87812.rs:6:13
|
||||||
|
|
|
||||||
|
LL | break '_l $f;
|
||||||
|
| ^^^^^^^^^^^^
|
||||||
|
...
|
||||||
|
LL | let x = foo!({ 3 });
|
||||||
|
| ----------- in this macro invocation
|
||||||
|
|
|
||||||
|
note: the lint level is defined here
|
||||||
|
--> $DIR/issue-87812.rs:1:9
|
||||||
|
|
|
||||||
|
LL | #![deny(break_with_label_and_loop)]
|
||||||
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
= note: this error originates in the macro `foo` (in Nightly builds, run with -Z macro-backtrace for more info)
|
||||||
|
help: wrap this expression in parentheses
|
||||||
|
|
|
||||||
|
LL | break '_l ($f);
|
||||||
|
| + +
|
||||||
|
|
||||||
|
error: aborting due to previous error
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue