Skip to content

ICE: unstable fingerprints for explicit_supertraits_containing_assoc_item (MetaSized supertrait) from uninhabited_references under incremental + --fix #17262

Description

@azjezz

Summary

cargo clippy --fix ICEs on the second run with an incremental-compilation fingerprint failure:

internal compiler error: encountered incremental compilation error with
explicit_supertraits_containing_assoc_item(7c167f34723db2a3-db377176ff98b4a5)

thread 'rustc' panicked at compiler/rustc_middle/src/verify_ich.rs:82:9:
Found unstable fingerprints for explicit_supertraits_containing_assoc_item(...):
EarlyBinder { value: [(Binder { value: TraitPredicate(<Self as std::marker::MetaSized>,
polarity:Positive), bound_vars: [] }, crates/allocator/src/copy.rs:37:1: 43:2 (#294))], .. }

query stack during panic:
#0 [explicit_supertraits_containing_assoc_item] computing the super traits of `copy::CopyInto` with associated type name `Output`
#1 [analysis] running analysis passes on crate `mago_allocator`

cargo check --workspace --all-targets --all-features (incremental) is clean, only clippy triggers it, via clippy_lints::uninhabited_references calling lower_ty -> resolve_type_relative_path -> explicit_supertraits_containing_assoc_item. The unstable fingerprint is the implicit MetaSized super trait clause of this trait, which has a GAT with an outlives bound:

// crates/allocator/src/copy.rs
pub trait CopyInto {
    type Output<'arena>: 'arena;

    fn copy_into<'arena, A>(&self, arena: &'arena A) -> Self::Output<'arena>
    where
        A: Arena;
}

Reproduction (deterministic, from a clean build)

  1. Check out carthage-software/mago at commit 83720bcde7ce0b0c4830bf5511444b1065623033.
  2. Run finishes cleanly, populating the incremental cache:
    cargo +nightly-2026-06-17 clippy --workspace --all-targets --all-features --fix --allow-dirty --allow-staged
  3. Make any small edit. In my case, a one-token change to a bool literal:
diff --git a/crates/hir/src/lower/statement/mod.rs b/crates/hir/src/lower/statement/mod.rs
@@ -164,7 +164,7 @@ where
                 kind: IdentifierKind::Local,
             },
             value,
-            flattened: false,
+            flattened: true,
         });
  1. Re-run the exact same command -> ICE in mago-allocator (lib test).

cargo clean -p mago_allocator (or cargo clean) clears it until the next edit.

Version

rustc 1.98.0-nightly (9e2abe0c6 2026-06-16)
clippy 0.1.98 (9e2abe0c6a 2026-06-16)
binary: rustc
host: aarch64-apple-darwin
toolchain: nightly-2026-06-17
compiler flags: -C lto=off -C embed-bitcode=no -C debuginfo=2 -C split-debuginfo=unpacked -C

Error output

Backtrace

cargo +nightly-2026-06-17 clippy --workspace --all-targets --all-features --fix --allow-dirty --allow-staged
  Checking mago-twig-syntax v1.30.0 (/Users/azjezz/carthage-software/mago/crates/twig-syntax)
  Checking mago-flags v1.30.0 (/Users/azjezz/carthage-software/mago/crates/flags)
  Checking mago-type-syntax v1.30.0 (/Users/azjezz/carthage-software/mago/crates/type-syntax)
  Checking mago v1.30.0 (/Users/azjezz/carthage-software/mago)
  Checking mago-wasm v1.30.0 (/Users/azjezz/carthage-software/mago/crates/wasm)
  Checking mago-documentation v1.30.0 (/Users/azjezz/carthage-software/mago/docs)
  Checking mago-hir v1.30.0 (/Users/azjezz/carthage-software/mago/crates/hir)
  Checking mago-syntax v1.30.0 (/Users/azjezz/carthage-software/mago/crates/syntax)
  Checking mago-orchestrator v1.30.0 (/Users/azjezz/carthage-software/mago/crates/orchestrator)
  Checking mago-guard v1.30.0 (/Users/azjezz/carthage-software/mago/crates/guard)
  Checking mago-semantics v1.30.0 (/Users/azjezz/carthage-software/mago/crates/semantics)
  Checking mago-formatter v1.30.0 (/Users/azjezz/carthage-software/mago/crates/formatter)
  Checking mago-analyzer v1.30.0 (/Users/azjezz/carthage-software/mago/crates/analyzer)
  Checking mago-prelude v1.30.0 (/Users/azjezz/carthage-software/mago/crates/prelude)
  Checking mago-algebra v1.30.0 (/Users/azjezz/carthage-software/mago/crates/algebra)
  Checking mago-linter v1.30.0 (/Users/azjezz/carthage-software/mago/crates/linter)
  Checking mago-codex v1.30.0 (/Users/azjezz/carthage-software/mago/crates/codex)
  Checking mago-fingerprint v1.30.0 (/Users/azjezz/carthage-software/mago/crates/fingerprint)
  Checking mago-text-edit v1.30.0 (/Users/azjezz/carthage-software/mago/crates/text-edit)
  Checking mago-database v1.30.0 (/Users/azjezz/carthage-software/mago/crates/database)
  Checking mago-phpdoc-syntax v1.30.0 (/Users/azjezz/carthage-software/mago/crates/phpdoc-syntax)
  Checking mago-names v1.30.0 (/Users/azjezz/carthage-software/mago/crates/names)
  Checking mago-docblock v1.30.0 (/Users/azjezz/carthage-software/mago/crates/docblock)
  Checking mago-collector v1.30.0 (/Users/azjezz/carthage-software/mago/crates/collector)
  Checking mago-word v1.30.0 (/Users/azjezz/carthage-software/mago/crates/word)
  Checking mago-reporting v1.30.0 (/Users/azjezz/carthage-software/mago/crates/reporting)
  Checking mago-php-version v1.30.0 (/Users/azjezz/carthage-software/mago/crates/php-version)
  Checking mago-allocator v1.30.0 (/Users/azjezz/carthage-software/mago/crates/allocator)
  Checking mago-syntax-core v1.30.0 (/Users/azjezz/carthage-software/mago/crates/syntax-core)
  Checking mago-composer v1.30.0 (/Users/azjezz/carthage-software/mago/crates/composer)
  Checking mago-span v1.30.0 (/Users/azjezz/carthage-software/mago/crates/span)
  Checking mago-casing v1.30.0 (/Users/azjezz/carthage-software/mago/crates/casing)
  Checking mago-bytes v1.30.0 (/Users/azjezz/carthage-software/mago/crates/bytes)
error: internal compiler error: encountered incremental compilation error with explicit_supertraits_containing_assoc_item(7c167f34723db2a3-db377176ff98b4a5)
|
= note: please follow the instructions below to create a bug report with the provided information
= note: for incremental compilation bugs, having a reproduction is vital
= note: an ideal reproduction consists of the code before and some patch that then triggers the bug when applied and compiled again
= note: as a workaround, you can run `cargo clean -p mago_allocator` or `cargo clean` to allow your project to compile


thread 'rustc' (7981370) panicked at /rustc-dev/9e2abe0c6ab27fcbb95c30695188a75776e2feb1/compiler/rustc_middle/src/verify_ich.rs:82:9:
Found unstable fingerprints for explicit_supertraits_containing_assoc_item(7c167f34723db2a3-db377176ff98b4a5): EarlyBinder { value: [(Binder { value: TraitPredicate(<Self as std::marker::MetaSized>, polarity:Positive), bound_vars: [] }, crates/allocator/src/copy.rs:37:1: 43:2 (#294))], .. }
stack backtrace:
 0:        0x10e1fa054 - <<std[d3783d53da562e31]::sys::backtrace::BacktraceLock>::print::DisplayBacktrace as core[3c5ff4f09fe76026]::fmt::Display>::fmt
 1:        0x10b027edc - core[3c5ff4f09fe76026]::fmt::write
 2:        0x10e210eac - <std[d3783d53da562e31]::sys::stdio::unix::Stderr as std[d3783d53da562e31]::io::Write>::write_fmt
 3:        0x10e1cfb50 - std[d3783d53da562e31]::panicking::default_hook::{closure#0}
 4:        0x10e1eba54 - std[d3783d53da562e31]::panicking::default_hook
 5:        0x10bcfef70 - std[d3783d53da562e31]::panicking::update_hook::<alloc[9a976e6bcb1b2c37]::boxed::Box<rustc_driver_impl[c13d7372b551b7]::install_ice_hook::{closure#1}>>::{closure#0}
 6:        0x10e1ebdb8 - std[d3783d53da562e31]::panicking::panic_with_hook
 7:        0x10e1cfbe0 - std[d3783d53da562e31]::panicking::panic_handler::{closure#0}
 8:        0x10e1c45ac - std[d3783d53da562e31]::sys::backtrace::__rust_end_short_backtrace::<std[d3783d53da562e31]::panicking::panic_handler::{closure#0}, !>
 9:        0x10e1d11b4 - __rustc[ea0685af806a8468]::rust_begin_unwind
10:        0x10e2b6ce0 - core[3c5ff4f09fe76026]::panicking::panic_fmt
11:        0x10e397c28 - rustc_middle[5a33cdd80f13a657]::verify_ich::incremental_verify_ich_failed
12:        0x10d4af5a0 - rustc_middle[5a33cdd80f13a657]::verify_ich::incremental_verify_ich::<rustc_middle[5a33cdd80f13a657]::query::erase::ErasedData<[u8; 16usize]>>
13:        0x10d5683cc - rustc_query_impl[717a2bc7bda723d6]::execution::try_execute_query::<rustc_middle[5a33cdd80f13a657]::query::caches::DefaultCache<(rustc_span[f18fbf591898a2d1]::def_id::DefId, rustc_span[f18fbf591898a2d1]::symbol::Ident), rustc_middle[5a33cdd80f13a657]::query::erase::ErasedData<[u8; 16usize]>>, true>
14:        0x10d6c14f0 - rustc_query_impl[717a2bc7bda723d6]::query_impl::explicit_supertraits_containing_assoc_item::execute_query_incr::__rust_end_short_backtrace
15:        0x10c143dec - <core[3c5ff4f09fe76026]::iter::sources::from_fn::FromFn<rustc_infer[53956927233a6bcc]::traits::util::transitive_bounds_that_define_assoc_item<core[3c5ff4f09fe76026]::iter::adapters::filter_map::FilterMap<core[3c5ff4f09fe76026]::iter::adapters::map::Map<rustc_type_ir[70eff93a3abc5bb7]::binder::IterIdentityCopied<rustc_middle[5a33cdd80f13a657]::ty::context::TyCtxt, &[(rustc_middle[5a33cdd80f13a657]::ty::predicate::Clause, rustc_span[f18fbf591898a2d1]::span_encoding::Span)]>, <rustc_type_ir[70eff93a3abc5bb7]::unnormalized::Unnormalized<rustc_middle[5a33cdd80f13a657]::ty::context::TyCtxt, (rustc_middle[5a33cdd80f13a657]::ty::predicate::Clause, rustc_span[f18fbf591898a2d1]::span_encoding::Span)>>::skip_norm_wip>, <dyn rustc_hir_analysis[dda4eb4b1a1ae029]::hir_ty_lowering::HirTyLowerer>::probe_single_ty_param_bound_for_assoc_item::{closure#0}::{closure#0}::{closure#0}>>::{closure#0}> as core[3c5ff4f09fe76026]::iter::traits::iterator::Iterator>::next
16:        0x10bfe761c - <dyn rustc_hir_analysis[dda4eb4b1a1ae029]::hir_ty_lowering::HirTyLowerer>::probe_single_bound_for_assoc_item::<core[3c5ff4f09fe76026]::iter::sources::from_fn::FromFn<rustc_infer[53956927233a6bcc]::traits::util::transitive_bounds_that_define_assoc_item<core[3c5ff4f09fe76026]::iter::adapters::filter_map::FilterMap<core[3c5ff4f09fe76026]::iter::adapters::map::Map<rustc_type_ir[70eff93a3abc5bb7]::binder::IterIdentityCopied<rustc_middle[5a33cdd80f13a657]::ty::context::TyCtxt, &[(rustc_middle[5a33cdd80f13a657]::ty::predicate::Clause, rustc_span[f18fbf591898a2d1]::span_encoding::Span)]>, <rustc_type_ir[70eff93a3abc5bb7]::unnormalized::Unnormalized<rustc_middle[5a33cdd80f13a657]::ty::context::TyCtxt, (rustc_middle[5a33cdd80f13a657]::ty::predicate::Clause, rustc_span[f18fbf591898a2d1]::span_encoding::Span)>>::skip_norm_wip>, <dyn rustc_hir_analysis[dda4eb4b1a1ae029]::hir_ty_lowering::HirTyLowerer>::probe_single_ty_param_bound_for_assoc_item::{closure#0}::{closure#0}::{closure#0}>>::{closure#0}>, <dyn rustc_hir_analysis[dda4eb4b1a1ae029]::hir_ty_lowering::HirTyLowerer>::probe_single_ty_param_bound_for_assoc_item::{closure#0}::{closure#0}>::{closure#0}
17:        0x10c068814 - <dyn rustc_hir_analysis[dda4eb4b1a1ae029]::hir_ty_lowering::HirTyLowerer>::resolve_type_relative_path
18:        0x10bffe024 - <dyn rustc_hir_analysis[dda4eb4b1a1ae029]::hir_ty_lowering::HirTyLowerer>::lower_type_relative_path::{closure#0}
19:        0x10c001998 - <dyn rustc_hir_analysis[dda4eb4b1a1ae029]::hir_ty_lowering::HirTyLowerer>::lower_type_relative_ty_path::{closure#0}
20:        0x10c06f834 - <dyn rustc_hir_analysis[dda4eb4b1a1ae029]::hir_ty_lowering::HirTyLowerer>::lower_ty
21:        0x10c026430 - rustc_hir_analysis[dda4eb4b1a1ae029]::lower_ty
22:        0x104cbf718 - <clippy_lints[fe29b11fac02b60d]::uninhabited_references::UninhabitedReferences as rustc_lint[1a91eeefb5318701]::passes::LateLintPass>::check_fn
23:        0x104d68f54 - <clippy_lints[fe29b11fac02b60d]::CombinedLateLintPass as rustc_lint[1a91eeefb5318701]::passes::LateLintPass>::check_fn
24:        0x10c7d41c4 - <rustc_lint[1a91eeefb5318701]::late::LateContextAndPass<rustc_lint[1a91eeefb5318701]::late::RuntimeCombinedLateLintPass>>::with_param_env::<<rustc_lint[1a91eeefb5318701]::late::LateContextAndPass<rustc_lint[1a91eeefb5318701]::late::RuntimeCombinedLateLintPass> as rustc_hir[45e3af46f650e39f]::intravisit::Visitor>::visit_item::{closure#0}::{closure#0}>
25:        0x10c9608d4 - <rustc_lint[1a91eeefb5318701]::late::LateContextAndPass<rustc_lint[1a91eeefb5318701]::late::RuntimeCombinedLateLintPass> as rustc_hir[45e3af46f650e39f]::intravisit::Visitor>::visit_item
26:        0x10c7d4264 - <rustc_lint[1a91eeefb5318701]::late::LateContextAndPass<rustc_lint[1a91eeefb5318701]::late::RuntimeCombinedLateLintPass>>::with_param_env::<<rustc_lint[1a91eeefb5318701]::late::LateContextAndPass<rustc_lint[1a91eeefb5318701]::late::RuntimeCombinedLateLintPass> as rustc_hir[45e3af46f650e39f]::intravisit::Visitor>::visit_item::{closure#0}::{closure#0}>
27:        0x10c9608d4 - <rustc_lint[1a91eeefb5318701]::late::LateContextAndPass<rustc_lint[1a91eeefb5318701]::late::RuntimeCombinedLateLintPass> as rustc_hir[45e3af46f650e39f]::intravisit::Visitor>::visit_item
28:        0x10c88ebc4 - rustc_lint[1a91eeefb5318701]::late::check_crate::{closure#0}
29:        0x10c8e5848 - rustc_lint[1a91eeefb5318701]::late::check_crate
30:        0x10c6e83a4 - rustc_interface[2be83b2278345bfe]::passes::analysis::{closure#0}::{closure#0}::{closure#2}
31:        0x10bc9e670 - rustc_data_structures[94ee8582811442b9]::sync::parallel::par_fns
32:        0x10c6ea9cc - rustc_interface[2be83b2278345bfe]::passes::analysis::{closure#0}::{closure#0}
33:        0x10bc9e670 - rustc_data_structures[94ee8582811442b9]::sync::parallel::par_fns
34:        0x10c72cae4 - rustc_interface[2be83b2278345bfe]::passes::analysis
35:        0x10d4f1460 - rustc_query_impl[717a2bc7bda723d6]::execution::try_execute_query::<rustc_middle[5a33cdd80f13a657]::query::caches::SingleCache<rustc_middle[5a33cdd80f13a657]::query::erase::ErasedData<[u8; 0usize]>>, true>
36:        0x10d6c3db4 - rustc_query_impl[717a2bc7bda723d6]::query_impl::analysis::execute_query_incr::__rust_end_short_backtrace
37:        0x10bcb5050 - rustc_interface[2be83b2278345bfe]::passes::create_and_enter_global_ctxt::<core[3c5ff4f09fe76026]::option::Option<rustc_interface[2be83b2278345bfe]::queries::Linker>, rustc_driver_impl[c13d7372b551b7]::run_compiler::{closure#0}::{closure#2}>
38:        0x10bcfe364 - rustc_interface[2be83b2278345bfe]::interface::run_compiler::<(), rustc_driver_impl[c13d7372b551b7]::run_compiler::{closure#0}>::{closure#1}
39:        0x10bcf5ddc - std[d3783d53da562e31]::sys::backtrace::__rust_begin_short_backtrace::<rustc_interface[2be83b2278345bfe]::util::run_in_thread_with_globals<rustc_interface[2be83b2278345bfe]::util::run_in_thread_pool_with_globals<rustc_interface[2be83b2278345bfe]::interface::run_compiler<(), rustc_driver_impl[c13d7372b551b7]::run_compiler::{closure#0}>::{closure#1}, ()>::{closure#0}, ()>::{closure#0}::{closure#0}, ()>
40:        0x10bd058a4 - <std[d3783d53da562e31]::thread::lifecycle::spawn_unchecked<rustc_interface[2be83b2278345bfe]::util::run_in_thread_with_globals<rustc_interface[2be83b2278345bfe]::util::run_in_thread_pool_with_globals<rustc_interface[2be83b2278345bfe]::interface::run_compiler<(), rustc_driver_impl[c13d7372b551b7]::run_compiler::{closure#0}>::{closure#1}, ()>::{closure#0}, ()>::{closure#0}::{closure#0}, ()>::{closure#1} as core[3c5ff4f09fe76026]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
41:        0x10e1f6b14 - <std[d3783d53da562e31]::sys::thread::unix::Thread>::new::thread_start
42:        0x1819afc58 - __pthread_cond_wait

error: the compiler unexpectedly panicked. This is a bug

note: we would appreciate a bug report: https://github.com/rust-lang/rust-clippy/issues/new?template=ice.yml

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

note: please attach the file at `/Users/azjezz/carthage-software/mago/rustc-ice-2026-06-18T04_27_36-14656.txt` to your bug report

note: rustc 1.98.0-nightly (9e2abe0c6 2026-06-16) running on aarch64-apple-darwin

note: compiler flags: -C lto=off -C embed-bitcode=no -C debuginfo=2 -C split-debuginfo=unpacked -C incremental=[REDACTED]

note: some of the compiler flags provided by cargo are hidden

query stack during panic:
#0 [explicit_supertraits_containing_assoc_item] computing the super traits of `copy::CopyInto` with associated type name `Output`
#1 [analysis] running analysis passes on crate `mago_allocator`
end of query stack
note: Clippy version: clippy 0.1.98 (9e2abe0c6a 2026-06-16)

error: could not compile `mago-allocator` (lib test) due to 1 previous error
warning: build failed, waiting for other jobs to finish...

Metadata

Metadata

Assignees

No one assigned

    Labels

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

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions