Skip to content

Crash in use_self: LateContext::typeck_results called outside of body #7423

Closed
@dtolnay

Description

@dtolnay

Code

pub trait Trait {
    fn f();
}

macro_rules! repro {
    ($ty:ty) => {
        impl Trait for $ty {
            fn f() {
                extern "C" {
                    fn _f() -> $ty;
                }
            }
        }
    };
}

repro!(usize);

Meta

  • cargo clippy -V: clippy 0.1.55 (798baeb 2021-07-02)
  • rustc -Vv:
    rustc 1.55.0-nightly (798baebde 2021-07-02)
    binary: rustc
    commit-hash: 798baebde1fe77e5a660490ec64e727a5d79970d
    commit-date: 2021-07-02
    host: x86_64-unknown-linux-gnu
    release: 1.55.0-nightly
    LLVM version: 12.0.1
    

Error output

thread 'rustc' panicked at '`LateContext::typeck_results` called outside of body', src/tools/clippy/clippy_lints/src/use_self.rs:213:20
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.

query stack during panic:
#0 [analysis] running analysis passes on this crate
end of query stack
Backtrace

 0: rust_begin_unwind
           at /rustc/798baebde1fe77e5a660490ec64e727a5d79970d/library/std/src/panicking.rs:515:5
 1: core::panicking::panic_fmt
           at /rustc/798baebde1fe77e5a660490ec64e727a5d79970d/library/core/src/panicking.rs:92:14
 2: core::option::expect_failed
           at /rustc/798baebde1fe77e5a660490ec64e727a5d79970d/library/core/src/option.rs:1243:5
 3: rustc_lint::context::LateContext::typeck_results
 4: <clippy_lints::use_self::UseSelf as rustc_lint::passes::LateLintPass>::check_ty
 5: <rustc_lint::late::LateLintPassObjects as rustc_lint::passes::LateLintPass>::check_ty
 6: <rustc_lint::late::LateContextAndPass<T> as rustc_hir::intravisit::Visitor>::visit_ty
 7: rustc_hir::intravisit::walk_foreign_item
 8: rustc_hir::intravisit::Visitor::visit_nested_foreign_item
 9: rustc_hir::intravisit::walk_foreign_item_ref
10: rustc_hir::intravisit::walk_item
11: rustc_hir::intravisit::Visitor::visit_nested_item
12: <rustc_lint::late::LateContextAndPass<T> as rustc_hir::intravisit::Visitor>::visit_stmt
13: rustc_hir::intravisit::walk_block
14: <rustc_lint::late::LateContextAndPass<T> as rustc_hir::intravisit::Visitor>::visit_block
15: <rustc_lint::late::LateContextAndPass<T> as rustc_hir::intravisit::Visitor>::visit_expr
16: <rustc_lint::late::LateContextAndPass<T> as rustc_hir::intravisit::Visitor>::visit_nested_body
17: <rustc_lint::late::LateContextAndPass<T> as rustc_hir::intravisit::Visitor>::visit_fn
18: rustc_hir::intravisit::walk_impl_item
19: rustc_hir::intravisit::Visitor::visit_nested_impl_item
20: rustc_hir::intravisit::walk_impl_item_ref
21: rustc_hir::intravisit::walk_item
22: rustc_hir::intravisit::Visitor::visit_nested_item
23: rustc_hir::intravisit::walk_mod
24: <rustc_lint::late::LateContextAndPass<T> as rustc_hir::intravisit::Visitor>::visit_mod
25: rustc_hir::intravisit::walk_crate
26: rustc_lint::late::late_lint_pass_crate
27: rustc_lint::late::late_lint_crate
28: rustc_data_structures::sync::join
29: <std::panic::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once
30: rustc_session::utils::<impl rustc_session::session::Session>::time
31: rustc_interface::passes::analysis
32: rustc_middle::dep_graph::<impl rustc_query_system::dep_graph::DepKind for rustc_middle::dep_graph::dep_node::DepKind>::with_deps
33: rustc_query_system::dep_graph::graph::DepGraph<K>::with_task_impl
34: rustc_query_system::dep_graph::graph::DepGraph<K>::with_eval_always_task
35: rustc_data_structures::stack::ensure_sufficient_stack
36: rustc_query_system::query::plumbing::force_query_with_job
37: rustc_query_system::query::plumbing::get_query_impl
38: <rustc_query_impl::Queries as rustc_middle::ty::query::QueryEngine>::analysis
39: rustc_interface::queries::<impl rustc_interface::interface::Compiler>::enter
40: rustc_span::with_source_map
41: rustc_interface::interface::create_compiler_and_run
42: scoped_tls::ScopedKey<T>::set

Mentioning @camsteffen @flip1995 who touched this lint recently in #7411.

Metadata

Metadata

Assignees

Labels

C-bugCategory: Clippy is not doing the correct thingI-ICEIssue: Clippy panicked, giving an Internal Compilation Error (ICE) ❄️

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions