Skip to content

repeat_once check scope should be limited #5944

Closed
@daft-panda

Description

@daft-panda

I have a trait with a repeat(&self) function, implemented by various structs. This causes the repeat_once check to panic with the stack trace below. Renaming the repeat function fixes this issue.

It seems the repeat_once check incorrectly assumes every repeat function has the same signature.

thread 'rustc' panicked at 'index out of bounds: the len is 1 but the index is 1', src/tools/clippy/clippy_lints/src/repeat_once.rs:44:93
stack backtrace:
   0:        0x10caffaf4 - <std::sys_common::backtrace::_print::DisplayBacktrace as core::fmt::Display>::fmt::hfb2db7374ccd4d34
   1:        0x10cb672ec - core::fmt::write::h7e381316a10f5e82
   2:        0x10caf125b - std::io::Write::write_fmt::h53862e22ed93af5e
   3:        0x10cb044b5 - std::panicking::default_hook::{{closure}}::h1a87f1c0565a051b
   4:        0x10cb041f2 - std::panicking::default_hook::he29ab2038604c86f
   5:        0x104eb8682 - clippy_driver::report_clippy_ice::hfe87e26afc670fc4
   6:        0x10cb04bad - std::panicking::rust_panic_with_hook::h9dab6d214201c5da
   7:        0x10cb0471b - std::panicking::begin_panic_handler::{{closure}}::hf4bcec37fb7265f5
   8:        0x10cafff38 - std::sys_common::backtrace::__rust_end_short_backtrace::h8c49942bd9c628f8
   9:        0x10cb046da - _rust_begin_unwind
  10:        0x10cb8b41f - core::panicking::panic_fmt::hc5e2a0be1d842c94
  11:        0x10cb8b3e6 - core::panicking::panic_bounds_check::h40dfc66b75b71880
  12:        0x10507b8a5 - <clippy_lints::repeat_once::RepeatOnce as rustc_lint::passes::LateLintPass>::check_expr::hfe80f357b0d3beb2
  13:        0x108f83e93 - <rustc_lint::late::LateLintPassObjects as rustc_lint::passes::LateLintPass>::check_expr::h3d8b51a989d23dc7
  14:        0x10591c1f7 - <rustc_lint::late::LateContextAndPass<T> as rustc_hir::intravisit::Visitor>::visit_expr::h0076165d2758ee24
  15:        0x1058a3ffc - rustc_hir::intravisit::walk_expr::h7b17a835e0a1e689
  16:        0x10591c202 - <rustc_lint::late::LateContextAndPass<T> as rustc_hir::intravisit::Visitor>::visit_expr::h0076165d2758ee24
  17:        0x1058a413d - rustc_hir::intravisit::walk_expr::h7b17a835e0a1e689
  18:        0x10591c202 - <rustc_lint::late::LateContextAndPass<T> as rustc_hir::intravisit::Visitor>::visit_expr::h0076165d2758ee24
  19:        0x10591c54b - <rustc_lint::late::LateContextAndPass<T> as rustc_hir::intravisit::Visitor>::visit_nested_body::h8949c7e4ab674644
  20:        0x10591c828 - <rustc_lint::late::LateContextAndPass<T> as rustc_hir::intravisit::Visitor>::visit_fn::h1ca4d7f3f2d0156d
  21:        0x1058a0cfc - rustc_hir::intravisit::walk_impl_item::hd3be12565657a6fe
  22:        0x10591d839 - rustc_hir::intravisit::Visitor::visit_nested_impl_item::hc043f75299e9272d
  23:        0x1058a5e9b - rustc_hir::intravisit::walk_item::hf65d3efac4c847ee
  24:        0x10591ce6a - rustc_hir::intravisit::Visitor::visit_nested_item::h4a2c193a1e7c2deb
  25:        0x1058a571d - rustc_hir::intravisit::walk_item::hf65d3efac4c847ee
  26:        0x10591ce6a - rustc_hir::intravisit::Visitor::visit_nested_item::h4a2c193a1e7c2deb
  27:        0x10589ffed - rustc_hir::intravisit::walk_crate::h5690f6fb1c3463a8
  28:        0x10590510e - rustc_lint::late::late_lint_pass_crate::h8e9cf5758b61dcff
  29:        0x105908a81 - rustc_session::utils::<impl rustc_session::session::Session>::time::h182bdff368aba700
  30:        0x1059580e5 - <std::panic::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once::h00f76374d4e840c0
  31:        0x105909a1b - rustc_session::utils::<impl rustc_session::session::Session>::time::h24d2ade0b7ebf22a
  32:        0x1059535db - rustc_interface::passes::analysis::h7e89637bc70aed1c
  33:        0x1056cda6a - rustc_middle::ty::query::<impl rustc_query_system::query::config::QueryAccessors<rustc_middle::ty::context::TyCtxt> for rustc_middle::ty::query::queries::analysis>::compute::h4aa47c2f3b3b8506
  34:        0x10564d244 - rustc_middle::dep_graph::<impl rustc_query_system::dep_graph::DepKind for rustc_middle::dep_graph::dep_node::DepKind>::with_deps::hec5607f5fcd91fa5
  35:        0x1056b7537 - rustc_query_system::dep_graph::graph::DepGraph<K>::with_task_impl::h81a818df1e17e349
  36:        0x1056c2d40 - rustc_data_structures::stack::ensure_sufficient_stack::h36cbd81f9c66f217
  37:        0x1056699c6 - rustc_query_system::query::plumbing::get_query_impl::h85de927e277c8177
  38:        0x1056ce7c9 - rustc_interface::queries::<impl rustc_interface::interface::Compiler>::enter::h5f267b10980944aa
  39:        0x10567777e - rustc_span::with_source_map::h41746b5ad19cb6c9
  40:        0x1056d0201 - rustc_interface::interface::create_compiler_and_run::hae2e250f665904c6
  41:        0x1056b56b3 - scoped_tls::ScopedKey<T>::set::h6f614b62c5f7ab14
  42:        0x1056c3e9f - std::sys_common::backtrace::__rust_begin_short_backtrace::h3e44a6eb413894f0
  43:        0x10566483c - core::ops::function::FnOnce::call_once{{vtable.shim}}::h4585fc2219a571d0
  44:        0x10cb131cd - std::sys::unix::thread::Thread::new::thread_start::h39b071b0d2fb7aea
  45:     0x7fff6f1f8109 - __pthread_start

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 (de521cbb3 2020-08-21)

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    I-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