Skip to content

Panic in clippy_lints/src/implicit_return.rs:150:66 #7231

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
phil-opp opened this issue May 17, 2021 · 4 comments · Fixed by #7242
Closed

Panic in clippy_lints/src/implicit_return.rs:150:66 #7231

phil-opp opened this issue May 17, 2021 · 4 comments · Fixed by #7242

Comments

@phil-opp
Copy link

Link to CI build where the issue occured: https://github.com/phil-opp/blog_os/runs/2600559391?check_suite_focus=true#step:4:226

Panic output with backtrace:

thread 'rustc' panicked at 'called `Option::unwrap()` on a `None` value', src/tools/clippy/clippy_lints/src/implicit_return.rs:150:66
stack backtrace:
   0: rust_begin_unwind
             at /rustc/fe72845f7bb6a77b9e671e6a4f32fe714962cec4/library/std/src/panicking.rs:515:5
   1: core::panicking::panic_fmt
             at /rustc/fe72845f7bb6a77b9e671e6a4f32fe714962cec4/library/core/src/panicking.rs:92:14
   2: core::panicking::panic
             at /rustc/fe72845f7bb6a77b9e671e6a4f32fe714962cec4/library/core/src/panicking.rs:50:5
   3: <clippy_utils::visitors::visit_break_exprs::V<F> as rustc_hir::intravisit::Visitor>::visit_expr
   4: rustc_hir::intravisit::walk_expr
   5: clippy_lints::implicit_return::lint_implicit_returns
   6: clippy_lints::implicit_return::lint_implicit_returns
   7: <rustc_lint::late::LateLintPassObjects as rustc_lint::passes::LateLintPass>::check_fn
   8: <rustc_lint::late::LateContextAndPass<T> as rustc_hir::intravisit::Visitor>::visit_fn
   9: rustc_hir::intravisit::walk_item
  10: rustc_hir::intravisit::Visitor::visit_nested_item
  11: rustc_hir::intravisit::walk_mod
  12: <rustc_lint::late::LateContextAndPass<T> as rustc_hir::intravisit::Visitor>::visit_mod
  13: rustc_hir::intravisit::Visitor::visit_nested_item
  14: rustc_hir::intravisit::walk_mod
  15: <rustc_lint::late::LateContextAndPass<T> as rustc_hir::intravisit::Visitor>::visit_mod
  16: rustc_hir::intravisit::Visitor::visit_nested_item
  17: rustc_hir::intravisit::walk_mod
  18: <rustc_lint::late::LateContextAndPass<T> as rustc_hir::intravisit::Visitor>::visit_mod
  19: rustc_hir::intravisit::walk_crate
  20: rustc_lint::late::late_lint_pass_crate
  21: rustc_lint::late::late_lint_crate
  22: rustc_data_structures::sync::join
  23: std::panic::catch_unwind
  24: rustc_session::utils::<impl rustc_session::session::Session>::time
  25: rustc_interface::passes::analysis
  26: rustc_middle::dep_graph::<impl rustc_query_system::dep_graph::DepKind for rustc_middle::dep_graph::dep_node::DepKind>::with_deps
  27: rustc_query_system::dep_graph::graph::DepGraph<K>::with_task_impl
  28: rustc_data_structures::stack::ensure_sufficient_stack
  29: rustc_query_system::query::plumbing::force_query_with_job
  30: rustc_query_system::query::plumbing::get_query_impl
  31: <rustc_query_impl::Queries as rustc_middle::ty::query::QueryEngine>::analysis
  32: rustc_interface::queries::<impl rustc_interface::interface::Compiler>::enter
  33: rustc_span::with_source_map
  34: rustc_interface::interface::create_compiler_and_run
  35: scoped_tls::ScopedKey<T>::set
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.

error: internal compiler error: unexpected panic
Error: internal compiler error: unexpected panic
note: the compiler unexpectedly panicked. this is a bug.

note: we would appreciate a bug report: https://github.com/rust-lang/rust-clippy/issues/new

note: Clippy version: clippy 0.1.54 (fe72845 2021-05-16)

query stack during panic:
#0 [analysis] running analysis passes on this crate
end of query stack
@Nashenas88
Copy link

I just ran into the same issue. Seems to be related to 22f8c13. CC @Jarcho

@matthiaskrgr
Copy link
Member

matthiaskrgr commented May 17, 2021

The issue is relatively easy to fix I think (just don't blindly unwrap) but i wasnt able to reduce a proper testcase in the no_std code linked above :/

@ghost
Copy link

ghost commented May 18, 2021

Got it down to

pub async fn f() {
    while let Some(true) = Some(false) {
        match 'x' {
            _ => (),
        }
    }
}

@ghost
Copy link

ghost commented May 18, 2021

#[allow(clippy::unused_unit)]
pub async fn f() {
    while false {
        ()
    }
}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants