fix: semicolon_outside_block suggests wrongly when inside macros

This commit is contained in:
yanglsh 2025-06-02 13:40:31 +08:00
parent 57cbadd68a
commit 12fc6c7cc9
3 changed files with 51 additions and 1 deletions

View file

@ -143,7 +143,7 @@ impl LateLintPass<'_> for SemicolonBlock {
StmtKind::Expr(Expr {
kind: ExprKind::Block(block, _),
..
}) if !block.span.from_expansion() => {
}) if !block.span.from_expansion() && stmt.span.contains(block.span) => {
let Block {
expr: None,
stmts: [.., stmt],

View file

@ -96,3 +96,28 @@ fn main() {
unit_fn_block()
}
fn issue14926() {
macro_rules! gen_code {
[$l:lifetime: $b:block, $b2: block $(,)?] => {
$l: loop {
$b
break $l;
}
$l: loop {
$b2
break $l;
}
};
}
gen_code! {
'root:
{
println!("Block1");
},
{
println!("Block2");
},
}
}

View file

@ -96,3 +96,28 @@ fn main() {
unit_fn_block()
}
fn issue14926() {
macro_rules! gen_code {
[$l:lifetime: $b:block, $b2: block $(,)?] => {
$l: loop {
$b
break $l;
}
$l: loop {
$b2
break $l;
}
};
}
gen_code! {
'root:
{
println!("Block1");
},
{
println!("Block2");
},
}
}