Skip to content

ICE: index out of bounds in rustc_middle/src/ty/generic_args.rs's param_at #148124

@cushionbadak

Description

@cushionbadak

Code

#![feature(associated_const_equality)]
#![feature(impl_trait_in_assoc_type)]

trait Trait<T> {
    const K: T;
}
trait Discard {
    type Out;
}

trait Inner {
    type T;
}

impl<'a> Inner for &'a i32 {
    type T = impl Trait<<fn(&'a str) -> &'a str as Discard>::Out, K = { () }>;
}

fn main() {}

A mutant of glacier2's fixed/23406.rs

Meta

rustc --version --verbose:

rustc 1.93.0-nightly (34f954f9b 2025-10-25)
binary: rustc
commit-hash: 34f954f9b7cbdb5e9b408bac1c4ff1e88b5f2719
commit-date: 2025-10-25
host: x86_64-apple-darwin
release: 1.93.0-nightly
LLVM version: 21.1.3

Error output

command: rustc

thread 'rustc' (47100741) panicked at compiler/rustc_middle/src/ty/generics.rs:221:29:
index out of bounds: the len is 0 but the index is 0
Backtrace

thread 'rustc' (47100741) panicked at compiler/rustc_middle/src/ty/generics.rs:221:29:
index out of bounds: the len is 0 but the index is 0
stack backtrace:
   0: __rustc::rust_begin_unwind
   1: core::panicking::panic_fmt
   2: core::panicking::panic_bounds_check
   3: <rustc_middle::ty::generics::Generics>::param_at
   4: <dyn rustc_hir_analysis::hir_ty_lowering::HirTyLowerer>::lower_poly_trait_ref
   5: <dyn rustc_hir_analysis::hir_ty_lowering::HirTyLowerer>::lower_bounds::<&[rustc_hir::hir::GenericBound]>
   6: rustc_hir_analysis::collect::item_bounds::opaque_type_bounds
   7: rustc_hir_analysis::collect::item_bounds::explicit_item_bounds_with_filter
   8: rustc_hir_analysis::collect::item_bounds::explicit_item_self_bounds
      [... omitted 2 frames ...]
   9: rustc_hir_analysis::collect::item_bounds::item_self_bounds
      [... omitted 1 frame ...]
  10: <rustc_trait_selection::traits::select::SelectionContext>::assemble_candidates
  11: <rustc_trait_selection::traits::select::SelectionContext>::candidate_from_obligation::{closure#0}::{closure#0}
  12: <rustc_trait_selection::traits::select::SelectionContext>::candidate_from_obligation::{closure#0}
  13: <rustc_trait_selection::traits::select::SelectionContext>::poly_select::{closure#0}
  14: <rustc_trait_selection::traits::fulfill::FulfillProcessor>::process_trait_obligation
  15: <rustc_trait_selection::traits::fulfill::FulfillProcessor as rustc_data_structures::obligation_forest::ObligationProcessor>::process_obligation
  16: <rustc_data_structures::obligation_forest::ObligationForest<rustc_trait_selection::traits::fulfill::PendingPredicateObligation>>::process_obligations::<rustc_trait_selection::traits::fulfill::FulfillProcessor>
  17: <rustc_trait_selection::traits::fulfill::FulfillmentContext<rustc_trait_selection::traits::FulfillmentError> as rustc_infer::traits::engine::TraitEngine<rustc_trait_selection::traits::FulfillmentError>>::try_evaluate_obligations
  18: <rustc_trait_selection::traits::fulfill::FulfillmentContext<rustc_trait_selection::traits::FulfillmentError> as rustc_infer::traits::engine::TraitEngine<rustc_trait_selection::traits::FulfillmentError>>::evaluate_obligations_error_on_ambiguity
  19: rustc_hir_analysis::check::compare_impl_item::check_type_bounds
  20: rustc_hir_analysis::check::compare_impl_item::compare_impl_item
      [... omitted 1 frame ...]
  21: rustc_hir_analysis::check::check::check_impl_items_against_trait
  22: rustc_hir_analysis::check::check::check_item_type
  23: rustc_hir_analysis::check::wfcheck::check_well_formed
      [... omitted 1 frame ...]
  24: rustc_hir_analysis::check::wfcheck::check_type_wf
      [... omitted 1 frame ...]
  25: rustc_hir_analysis::check_crate
  26: rustc_interface::passes::analysis
      [... omitted 1 frame ...]
  27: rustc_interface::passes::create_and_enter_global_ctxt::<core::option::Option<rustc_interface::queries::Linker>, rustc_driver_impl::run_compiler::{closure#0}::{closure#2}>
  28: rustc_interface::interface::run_compiler::<(), rustc_driver_impl::run_compiler::{closure#0}>::{closure#1}
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.

error: the compiler unexpectedly panicked. this is a bug.

note: we would appreciate a bug report: https://github.com/rust-lang/rust/issues/new?labels=C-bug%2C+I-ICE%2C+T-compiler&template=ice.md

note: please make sure that you have updated to the latest nightly

note: please attach the file at `/Volumes/T7/workspace/scratch_250918/rustc-ice-2025-10-26T04_04_40-96550.txt` to your bug report

query stack during panic:
#0 [explicit_item_self_bounds] finding item bounds for `<impl at 2.rs:15:1: 15:27>::T::{opaque#0}`
#1 [item_self_bounds] elaborating item assumptions for `<impl at 2.rs:15:1: 15:27>::T::{opaque#0}`
#2 [compare_impl_item] checking assoc item `<impl at 2.rs:15:1: 15:27>::T` is compatible with trait definition
#3 [check_well_formed] checking that `<impl at 2.rs:15:1: 15:27>` is well-formed
#4 [check_type_wf] checking that types are well-formed
#5 [analysis] running analysis passes on this crate
end of query stack

Regression in

Regression in nightly-2024-10-06

Log

cargo-bisect-rustc --start=2024-07-01 --end=2025-10-25 --regress ice --preserve --script rustc -- 1.rs

searched toolchains nightly-2024-07-01 through nightly-2025-10-25

********************************************************************************
Regression in nightly-2024-10-06
********************************************************************************

fetching https://static.rust-lang.org/dist/2024-10-05/channel-rust-nightly-git-commit-hash.txt
nightly manifest 2024-10-05: 40 B / 40 B [=======================================================] 100.00 % 772.61 KB/s converted 2024-10-05 to 14f303bc1430a78ddaa91b3e104bbe4c0413184e
fetching https://static.rust-lang.org/dist/2024-10-06/channel-rust-nightly-git-commit-hash.txt
nightly manifest 2024-10-06: 40 B / 40 B [=======================================================] 100.00 % 675.02 KB/s converted 2024-10-06 to 9096f4fafa2ac2d771f866337b4ee7064cde8575
looking for regression commit between 2024-10-05 and 2024-10-06
fetching (via remote github) commits from max(14f303bc1430a78ddaa91b3e104bbe4c0413184e, 2024-10-03) to 9096f4fafa2ac2d771f866337b4ee7064cde8575
ending github query because we found starting sha: 14f303bc1430a78ddaa91b3e104bbe4c0413184e
get_commits_between returning commits, len: 11
  commit[0] 2024-10-04: Auto merge of #130157 - eduardosm:stabilize-const_float_classify, r=RalfJung
  commit[1] 2024-10-04: Auto merge of #131269 - workingjubilee:rollup-bf7fzhf, r=workingjubilee
  commit[2] 2024-10-05: Auto merge of #131124 - weihanglo:update-cargo, r=weihanglo
  commit[3] 2024-10-05: Auto merge of #131275 - workingjubilee:rollup-4yxqio3, r=workingjubilee
  commit[4] 2024-10-05: Auto merge of #129244 - cjgillot:opaque-hir, r=compiler-errors
  commit[5] 2024-10-05: Auto merge of #3943 - RalfJung:pthread-mutex-reentrant, r=RalfJung
  commit[6] 2024-10-05: Auto merge of #3940 - rust-lang:refutable_slice, r=RalfJung
  commit[7] 2024-10-05: Auto merge of #131288 - matthiaskrgr:rollup-h0t0v2h, r=matthiaskrgr
  commit[8] 2024-10-05: Auto merge of #131188 - Kobzol:remove-libstd-so-from-sysroot, r=onur-ozkan
  commit[9] 2024-10-05: Auto merge of #131221 - XrXr:bump-compiler-builtins, r=tgross35
  commit[10] 2024-10-05: Auto merge of #131302 - matthiaskrgr:rollup-56kbpzx, r=matthiaskrgr
ERROR: no CI builds available between 14f303bc1430a78ddaa91b3e104bbe4c0413184e and 9096f4fafa2ac2d771f866337b4ee7064cde8575 within last 167 days

Notes

@rustbot label +F-associated_const_equality +F-impl_trait_in_assoc_type

Metadata

Metadata

Assignees

Labels

C-bugCategory: This is a bug.F-associated_const_equality`#![feature(associated_const_equality)]`F-impl_trait_in_assoc_type`#![feature(impl_trait_in_assoc_type)]`I-ICEIssue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️T-compilerRelevant to the compiler team, which will review and decide on the PR/issue.

Type

No type

Projects

Status

Can Do

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions