Trying to run ./x.py clippy on the rust repo leads to an ICE, due to some code in library/core. Isolating the specific example
cargo clippy -V: clippy 0.0.212 (21dea46 2020-11-18)rustc -Vv:rustc 1.49.0-beta.1 (21dea46d8 2020-11-18)
binary: rustc
commit-hash: 21dea46d8347c8b4117c5567949703f0fbb51649
commit-date: 2020-11-18
host: x86_64-unknown-linux-gnu
release: 1.49.0-beta.1
thread 'rustc' panicked at 'called `Option::unwrap()` on a `None` value', src/tools/clippy/clippy_lints/src/methods/mod.rs:3904:68
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
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.0.212 (21dea46 2020-11-18)
query stack during panic:
#0 [analysis] running analysis passes on this crate
end of query stack
Backtrace
thread 'rustc' panicked at 'called `Option::unwrap()` on a `None` value', src/tools/clippy/clippy_lints/src/methods/mod.rs:3904:68
stack backtrace:
0: rust_begin_unwind
at /rustc/21dea46d8347c8b4117c5567949703f0fbb51649/library/std/src/panicking.rs:495:5
1: core::panicking::panic_fmt
at /rustc/21dea46d8347c8b4117c5567949703f0fbb51649/library/core/src/panicking.rs:92:14
2: core::panicking::panic
at /rustc/21dea46d8347c8b4117c5567949703f0fbb51649/library/core/src/panicking.rs:50:5
3: <clippy_lints::methods::Methods as rustc_lint::passes::LateLintPass>::check_expr
4: <rustc_lint::late::LateLintPassObjects as rustc_lint::passes::LateLintPass>::check_expr
5: <rustc_lint::late::LateContextAndPass<T> as rustc_hir::intravisit::Visitor>::visit_expr
6: rustc_hir::intravisit::walk_expr
7: <rustc_lint::late::LateContextAndPass<T> as rustc_hir::intravisit::Visitor>::visit_expr
8: <rustc_lint::late::LateContextAndPass<T> as rustc_hir::intravisit::Visitor>::visit_nested_body
9: <rustc_lint::late::LateContextAndPass<T> as rustc_hir::intravisit::Visitor>::visit_fn
10: rustc_hir::intravisit::walk_trait_item
11: rustc_hir::intravisit::Visitor::visit_nested_trait_item
12: rustc_hir::intravisit::walk_item
13: rustc_hir::intravisit::Visitor::visit_nested_item
14: rustc_hir::intravisit::walk_item
15: rustc_hir::intravisit::Visitor::visit_nested_item
16: rustc_hir::intravisit::walk_item
17: rustc_hir::intravisit::Visitor::visit_nested_item
18: rustc_hir::intravisit::walk_item
19: rustc_hir::intravisit::Visitor::visit_nested_item
20: rustc_hir::intravisit::walk_crate
21: rustc_lint::late::late_lint_pass_crate
22: rustc_session::utils::<impl rustc_session::session::Session>::time
23: <std::panic::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once
24: rustc_session::utils::<impl rustc_session::session::Session>::time
25: rustc_interface::passes::analysis
26: rustc_middle::ty::query::<impl rustc_query_system::query::config::QueryAccessors<rustc_middle::ty::context::TyCtxt> for rustc_middle::ty::query::queries::analysis>::compute
27: rustc_middle::dep_graph::<impl rustc_query_system::dep_graph::DepKind for rustc_middle::dep_graph::dep_node::DepKind>::with_deps
28: rustc_query_system::dep_graph::graph::DepGraph<K>::with_task_impl
29: rustc_data_structures::stack::ensure_sufficient_stack
30: rustc_query_system::query::plumbing::get_query_impl
31: rustc_interface::passes::QueryContext::enter
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: rustc_span::with_session_globals
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
Thanks for your report! This might have been fixed by https://github.com/rust-lang/rust-clippy/pull/6304.
Yep, this has fixed it. Thanks for noticing @giraffate. And thanks for all the triage work you're doing for Clippy in general! :heart: :crab:
@giraffate @flip1995
I updated clippy and it is still not fixed for me.
New output:
thread 'rustc' panicked at 'called `Option::unwrap()` on a `None` value', src/tools/clippy/clippy_lints/src/methods/mod.rs:3904:68
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
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.0.212 (bd26e4e 2020-11-24)
New backtrace:
thread 'rustc' panicked at 'called `Option::unwrap()` on a `None` value', src/tools/clippy/clippy_lints/src/methods/mod.rs:3904:68
stack backtrace:
0: rust_begin_unwind
at /rustc/bd26e4e544992e52f2080906f71b2f1e6dc1b14a/library/std/src/panicking.rs:495:5
1: core::panicking::panic_fmt
at /rustc/bd26e4e544992e52f2080906f71b2f1e6dc1b14a/library/core/src/panicking.rs:92:14
2: core::panicking::panic
at /rustc/bd26e4e544992e52f2080906f71b2f1e6dc1b14a/library/core/src/panicking.rs:50:5
3: <clippy_lints::methods::Methods as rustc_lint::passes::LateLintPass>::check_expr
4: <rustc_lint::late::LateLintPassObjects as rustc_lint::passes::LateLintPass>::check_expr
5: <rustc_lint::late::LateContextAndPass<T> as rustc_hir::intravisit::Visitor>::visit_expr
6: rustc_hir::intravisit::walk_expr
7: <rustc_lint::late::LateContextAndPass<T> as rustc_hir::intravisit::Visitor>::visit_expr
8: <rustc_lint::late::LateContextAndPass<T> as rustc_hir::intravisit::Visitor>::visit_nested_body
9: <rustc_lint::late::LateContextAndPass<T> as rustc_hir::intravisit::Visitor>::visit_fn
10: rustc_hir::intravisit::walk_trait_item
11: rustc_hir::intravisit::Visitor::visit_nested_trait_item
12: rustc_hir::intravisit::walk_item
13: rustc_hir::intravisit::Visitor::visit_nested_item
14: rustc_hir::intravisit::walk_item
15: rustc_hir::intravisit::Visitor::visit_nested_item
16: rustc_hir::intravisit::walk_item
17: rustc_hir::intravisit::Visitor::visit_nested_item
18: rustc_hir::intravisit::walk_item
19: rustc_hir::intravisit::Visitor::visit_nested_item
20: rustc_hir::intravisit::walk_crate
21: rustc_lint::late::late_lint_pass_crate
22: rustc_session::utils::<impl rustc_session::session::Session>::time
23: <std::panic::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once
24: rustc_session::utils::<impl rustc_session::session::Session>::time
25: rustc_interface::passes::analysis
26: rustc_middle::ty::query::<impl rustc_query_system::query::config::QueryAccessors<rustc_middle::ty::context::TyCtxt> for rustc_middle::ty::query::queries::analysis>::compute
27: rustc_middle::dep_graph::<impl rustc_query_system::dep_graph::DepKind for rustc_middle::dep_graph::dep_node::DepKind>::with_deps
28: rustc_query_system::dep_graph::graph::DepGraph<K>::with_task_impl
29: rustc_data_structures::stack::ensure_sufficient_stack
30: rustc_query_system::query::plumbing::get_query_impl
31: rustc_interface::passes::QueryContext::enter
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: rustc_span::with_session_globals
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
Thanks for your new report! In rust-lang/rust at bd26e4e, it looks like https://github.com/rust-lang/rust-clippy/pull/6304 wasn't still synced back to rust-lang/rust. So I guess this will be fixed if syncing back process is done.
Yeah, can't reproduce when using latest clippy from this repo on the rustc repo via x.py clippy.
I would personally close this as "fixed upstream"( = in this clippy repo).
Yeah, can't reproduce when using latest clippy from this repo on the rustc repo via
x.py clippy.
How do you do this? When I tried it, I got the classic "has to have a known size at compile time" errors. I tried to run ./x.py clippy after installing it from the Clippy repo cargo +master install --path . --force.
I get the latest master toolchain rustup-toolchain-install-master -n master -f -c rustc-dev llvm-tools rust-src clippy
I compile clippy with that cargo +master build --release
I "install" that clippy into the master toolchain cd target/release; cp -f cargo-clippy clippy-driver ~/.rustup/toolchains/master/bin
I set the master toolchain as default temporarily rustup default master
Then I can use that clippy on rustc: ./x.py clippy which usually works fine then.