mirror of
https://github.com/rust-lang/rust-clippy
synced 2025-02-17 14:38:46 +00:00
Fix ICE in implicit_return
async functions always return a value
This commit is contained in:
parent
98cddc5d3a
commit
a149ba26fa
2 changed files with 15 additions and 1 deletions
|
@ -147,7 +147,11 @@ fn lint_implicit_returns(
|
|||
visit_break_exprs(block, |break_expr, dest, sub_expr| {
|
||||
if dest.target_id.ok() == Some(expr.hir_id) {
|
||||
if call_site_span.is_none() && break_expr.span.ctxt() == ctxt {
|
||||
lint_break(cx, break_expr.span, sub_expr.unwrap().span);
|
||||
// At this point sub_expr can be `None` in async functions which either diverge, or return the
|
||||
// unit type.
|
||||
if let Some(sub_expr) = sub_expr {
|
||||
lint_break(cx, break_expr.span, sub_expr.span);
|
||||
}
|
||||
} else {
|
||||
// the break expression is from a macro call, add a return to the loop
|
||||
add_return = true;
|
||||
|
|
10
tests/ui/crashes/ice-7231.rs
Normal file
10
tests/ui/crashes/ice-7231.rs
Normal file
|
@ -0,0 +1,10 @@
|
|||
// edition:2018
|
||||
#![allow(clippy::never_loop)]
|
||||
|
||||
async fn f() {
|
||||
loop {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
fn main() {}
|
Loading…
Add table
Reference in a new issue