Skip to content

ICE: Weak and Inherent aliases should have been normalized away already #120891

Description

@matthiaskrgr

auto-reduced (treereduce-rust):

trait Foo {}

type Bar<T: Foo> = impl std::fmt::Debug;

trait Bop {}

impl Bop for Bar<usize> {}

type Barr = impl std::fmt::Debug;

impl Bop for Barr {}

original:

#![feature(type_alias_impl_trait)]

trait Foo {}
impl Foo for () {}
impl Foo for i32 {}

type Bar<T: Foo> = impl std::fmt::Debug;
fn defining_use<T: Foo>() -> Bar<T> {
    42
}

trait Bop {}

impl Bop for Bar<()> {}

// If the hidden type is the same, this is effectively a second impl for the same type.
impl Bop for Bar<usize> {}
//~^ ERROR conflicting implementations

type Barr = impl std::fmt::Debug;
fn defining_use2() -> Barr {
    42
}

// Even completely different opaque types must conflict.
impl Bop for Barr {}
//~^ ERROR conflicting implementations

// And obviously the hidden type must conflict, too.
impl Bop for i32 {}
//~^ ERROR conflicting implementations

fn main() {}

Version information

rustc 1.78.0-nightly (6cc484351 2024-02-10)
binary: rustc
commit-hash: 6cc4843512d613f51ec81aba689180c31b0b28b6
commit-date: 2024-02-10
host: x86_64-unknown-linux-gnu
release: 1.78.0-nightly
LLVM version: 17.0.6

Command:
/home/matthias/.rustup/toolchains/master/bin/rustc -Znext-solver=coherence

Program output

error[E0658]: `impl Trait` in type aliases is unstable
 --> /tmp/icemaker_global_tempdir.RM2beP5WREmU/rustc_testrunner_tmpdir_reporting.WcwnBtogFJ2R/mvce.rs:3:20
  |
3 | type Bar<T: Foo> = impl std::fmt::Debug;
  |                    ^^^^^^^^^^^^^^^^^^^^
  |
  = note: see issue #63063 <https://github.com/rust-lang/rust/issues/63063> for more information
  = help: add `#![feature(type_alias_impl_trait)]` to the crate attributes to enable
  = note: this compiler was built on 2024-02-10; consider upgrading it if it is out of date

error[E0658]: `impl Trait` in type aliases is unstable
 --> /tmp/icemaker_global_tempdir.RM2beP5WREmU/rustc_testrunner_tmpdir_reporting.WcwnBtogFJ2R/mvce.rs:9:13
  |
9 | type Barr = impl std::fmt::Debug;
  |             ^^^^^^^^^^^^^^^^^^^^
  |
  = note: see issue #63063 <https://github.com/rust-lang/rust/issues/63063> for more information
  = help: add `#![feature(type_alias_impl_trait)]` to the crate attributes to enable
  = note: this compiler was built on 2024-02-10; consider upgrading it if it is out of date

error[E0601]: `main` function not found in crate `mvce`
  --> /tmp/icemaker_global_tempdir.RM2beP5WREmU/rustc_testrunner_tmpdir_reporting.WcwnBtogFJ2R/mvce.rs:11:21
   |
11 | impl Bop for Barr {}
   |                     ^ consider adding a `main` function to `/tmp/icemaker_global_tempdir.RM2beP5WREmU/rustc_testrunner_tmpdir_reporting.WcwnBtogFJ2R/mvce.rs`

thread 'rustc' panicked at compiler/rustc_trait_selection/src/solve/assembly/mod.rs:615:17:
internal error: entered unreachable code: Weak and Inherent aliases should have been normalized away already
stack backtrace:
   0:     0x7f6dd758b936 - std::backtrace_rs::backtrace::libunwind::trace::hce337a0fd0c5e1da
                               at /rustc/6cc4843512d613f51ec81aba689180c31b0b28b6/library/std/src/../../backtrace/src/backtrace/libunwind.rs:104:5
   1:     0x7f6dd758b936 - std::backtrace_rs::backtrace::trace_unsynchronized::hbc9b4a5cec9b81eb
                               at /rustc/6cc4843512d613f51ec81aba689180c31b0b28b6/library/std/src/../../backtrace/src/backtrace/mod.rs:66:5
   2:     0x7f6dd758b936 - std::sys_common::backtrace::_print_fmt::habe453adcd959f3b
                               at /rustc/6cc4843512d613f51ec81aba689180c31b0b28b6/library/std/src/sys_common/backtrace.rs:68:5
   3:     0x7f6dd758b936 - <std::sys_common::backtrace::_print::DisplayBacktrace as core::fmt::Display>::fmt::h67bb2d10ecb8af10
                               at /rustc/6cc4843512d613f51ec81aba689180c31b0b28b6/library/std/src/sys_common/backtrace.rs:44:22
   4:     0x7f6dd75de380 - core::fmt::rt::Argument::fmt::hd5debad710e176b4
                               at /rustc/6cc4843512d613f51ec81aba689180c31b0b28b6/library/core/src/fmt/rt.rs:142:9
   5:     0x7f6dd75de380 - core::fmt::write::h5987d5bee25e3bd6
                               at /rustc/6cc4843512d613f51ec81aba689180c31b0b28b6/library/core/src/fmt/mod.rs:1120:17
   6:     0x7f6dd757f0ef - std::io::Write::write_fmt::h0876e0f4bddb923c
                               at /rustc/6cc4843512d613f51ec81aba689180c31b0b28b6/library/std/src/io/mod.rs:1854:15
   7:     0x7f6dd758b714 - std::sys_common::backtrace::_print::h4ae69e83d64cbf46
                               at /rustc/6cc4843512d613f51ec81aba689180c31b0b28b6/library/std/src/sys_common/backtrace.rs:47:5
   8:     0x7f6dd758b714 - std::sys_common::backtrace::print::h1d97d5831d0262fb
                               at /rustc/6cc4843512d613f51ec81aba689180c31b0b28b6/library/std/src/sys_common/backtrace.rs:34:9
   9:     0x7f6dd758e4d7 - std::panicking::default_hook::{{closure}}::h39fabb1b3e65f47a
  10:     0x7f6dd758e239 - std::panicking::default_hook::h416520d6bb2cb53f
                               at /rustc/6cc4843512d613f51ec81aba689180c31b0b28b6/library/std/src/panicking.rs:292:9
  11:     0x7f6dda3266dc - std[3acc11fb688f3d76]::panicking::update_hook::<alloc[408654ec2a1215fa]::boxed::Box<rustc_driver_impl[a7481a600b2f11a0]::install_ice_hook::{closure#0}>>::{closure#0}
  12:     0x7f6dd758ec26 - <alloc::boxed::Box<F,A> as core::ops::function::Fn<Args>>::call::h2450ecbe2b1c1ea3
                               at /rustc/6cc4843512d613f51ec81aba689180c31b0b28b6/library/alloc/src/boxed.rs:2030:9
  13:     0x7f6dd758ec26 - std::panicking::rust_panic_with_hook::h99ef5cbc4b3b0ae4
                               at /rustc/6cc4843512d613f51ec81aba689180c31b0b28b6/library/std/src/panicking.rs:785:13
  14:     0x7f6dd758e939 - std::panicking::begin_panic_handler::{{closure}}::h2284f60633c08873
                               at /rustc/6cc4843512d613f51ec81aba689180c31b0b28b6/library/std/src/panicking.rs:651:13
  15:     0x7f6dd758be36 - std::sys_common::backtrace::__rust_end_short_backtrace::h84bc49437da26b5c
                               at /rustc/6cc4843512d613f51ec81aba689180c31b0b28b6/library/std/src/sys_common/backtrace.rs:171:18
  16:     0x7f6dd758e6c4 - rust_begin_unwind
                               at /rustc/6cc4843512d613f51ec81aba689180c31b0b28b6/library/std/src/panicking.rs:647:5
  17:     0x7f6dd75daa85 - core::panicking::panic_fmt::hfa0af2309df9012f
                               at /rustc/6cc4843512d613f51ec81aba689180c31b0b28b6/library/core/src/panicking.rs:72:14
  18:     0x7f6ddadbf083 - <rustc_trait_selection[c406a89a2b7dc7ed]::solve::eval_ctxt::EvalCtxt>::assemble_alias_bound_candidates_recur::<rustc_middle[9f94bb95ba4eb693]::ty::predicate::TraitPredicate>
  19:     0x7f6ddae37b43 - <rustc_trait_selection[c406a89a2b7dc7ed]::solve::eval_ctxt::EvalCtxt>::assemble_alias_bound_candidates::<rustc_middle[9f94bb95ba4eb693]::ty::predicate::TraitPredicate>
  20:     0x7f6ddadbbf1f - <rustc_trait_selection[c406a89a2b7dc7ed]::solve::eval_ctxt::EvalCtxt>::assemble_and_evaluate_candidates::<rustc_middle[9f94bb95ba4eb693]::ty::predicate::TraitPredicate>
  21:     0x7f6ddadd419d - <rustc_trait_selection[c406a89a2b7dc7ed]::solve::search_graph::SearchGraph>::with_new_goal::<<rustc_trait_selection[c406a89a2b7dc7ed]::solve::eval_ctxt::EvalCtxt>::evaluate_canonical_goal::{closure#0}::{closure#0}::{closure#0}>::{closure#3}
  22:     0x7f6ddadd0832 - <rustc_trait_selection[c406a89a2b7dc7ed]::solve::search_graph::SearchGraph>::with_new_goal::<<rustc_trait_selection[c406a89a2b7dc7ed]::solve::eval_ctxt::EvalCtxt>::evaluate_canonical_goal::{closure#0}::{closure#0}::{closure#0}>
  23:     0x7f6ddadc4d06 - <rustc_trait_selection[c406a89a2b7dc7ed]::solve::eval_ctxt::EvalCtxt>::evaluate_goal
  24:     0x7f6ddae3ab45 - <rustc_trait_selection[c406a89a2b7dc7ed]::solve::eval_ctxt::EvalCtxt>::try_evaluate_added_goals
  25:     0x7f6ddae37fd1 - <rustc_trait_selection[c406a89a2b7dc7ed]::solve::eval_ctxt::EvalCtxt>::evaluate_added_goals_and_make_canonical_response
  26:     0x7f6ddadd31a8 - <rustc_trait_selection[c406a89a2b7dc7ed]::solve::search_graph::SearchGraph>::with_new_goal::<<rustc_trait_selection[c406a89a2b7dc7ed]::solve::eval_ctxt::EvalCtxt>::evaluate_canonical_goal::{closure#0}::{closure#0}::{closure#0}>::{closure#3}
  27:     0x7f6ddadd0832 - <rustc_trait_selection[c406a89a2b7dc7ed]::solve::search_graph::SearchGraph>::with_new_goal::<<rustc_trait_selection[c406a89a2b7dc7ed]::solve::eval_ctxt::EvalCtxt>::evaluate_canonical_goal::{closure#0}::{closure#0}::{closure#0}>
  28:     0x7f6ddadc4d06 - <rustc_trait_selection[c406a89a2b7dc7ed]::solve::eval_ctxt::EvalCtxt>::evaluate_goal
  29:     0x7f6ddae3ab45 - <rustc_trait_selection[c406a89a2b7dc7ed]::solve::eval_ctxt::EvalCtxt>::try_evaluate_added_goals
  30:     0x7f6ddae37fd1 - <rustc_trait_selection[c406a89a2b7dc7ed]::solve::eval_ctxt::EvalCtxt>::evaluate_added_goals_and_make_canonical_response
  31:     0x7f6ddadd5e54 - <rustc_trait_selection[c406a89a2b7dc7ed]::solve::search_graph::SearchGraph>::with_new_goal::<<rustc_trait_selection[c406a89a2b7dc7ed]::solve::eval_ctxt::EvalCtxt>::evaluate_canonical_goal::{closure#0}::{closure#0}::{closure#0}>::{closure#3}
  32:     0x7f6ddadd0832 - <rustc_trait_selection[c406a89a2b7dc7ed]::solve::search_graph::SearchGraph>::with_new_goal::<<rustc_trait_selection[c406a89a2b7dc7ed]::solve::eval_ctxt::EvalCtxt>::evaluate_canonical_goal::{closure#0}::{closure#0}::{closure#0}>
  33:     0x7f6ddadc4d06 - <rustc_trait_selection[c406a89a2b7dc7ed]::solve::eval_ctxt::EvalCtxt>::evaluate_goal
  34:     0x7f6ddae3a11e - <rustc_infer[81d54d7e65d62577]::infer::InferCtxt as rustc_trait_selection[c406a89a2b7dc7ed]::solve::eval_ctxt::InferCtxtEvalExt>::evaluate_root_goal
  35:     0x7f6ddadc6a52 - <rustc_trait_selection[c406a89a2b7dc7ed]::solve::fulfill::FulfillmentCtxt as rustc_infer[81d54d7e65d62577]::traits::engine::TraitEngine>::select_where_possible
  36:     0x7f6dd86e7577 - <rustc_infer[81d54d7e65d62577]::infer::InferCtxt as rustc_trait_selection[c406a89a2b7dc7ed]::traits::query::evaluate_obligation::InferCtxtExt>::evaluate_obligation
  37:     0x7f6ddba7bb01 - rustc_trait_selection[c406a89a2b7dc7ed]::traits::coherence::overlap
  38:     0x7f6ddbb5995e - <rustc_middle[9f94bb95ba4eb693]::traits::specialization_graph::Children as rustc_trait_selection[c406a89a2b7dc7ed]::traits::specialize::specialization_graph::ChildrenExt>::insert
  39:     0x7f6ddbb58878 - <rustc_middle[9f94bb95ba4eb693]::traits::specialization_graph::Graph as rustc_trait_selection[c406a89a2b7dc7ed]::traits::specialize::specialization_graph::GraphExt>::insert
  40:     0x7f6ddc0e9dc9 - rustc_trait_selection[c406a89a2b7dc7ed]::traits::specialize::specialization_graph_provider
  41:     0x7f6ddc0e96d9 - rustc_query_impl[60cfa4eef1128f6c]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[60cfa4eef1128f6c]::query_impl::specialization_graph_of::dynamic_query::{closure#2}::{closure#0}, rustc_middle[9f94bb95ba4eb693]::query::erase::Erased<[u8; 8usize]>>
  42:     0x7f6ddb6744e1 - rustc_query_system[30cc65df29d7d3a8]::query::plumbing::try_execute_query::<rustc_query_impl[60cfa4eef1128f6c]::DynamicConfig<rustc_query_system[30cc65df29d7d3a8]::query::caches::DefIdCache<rustc_middle[9f94bb95ba4eb693]::query::erase::Erased<[u8; 8usize]>>, false, false, false>, rustc_query_impl[60cfa4eef1128f6c]::plumbing::QueryCtxt, false>
  43:     0x7f6ddbebdebc - rustc_query_impl[60cfa4eef1128f6c]::query_impl::specialization_graph_of::get_query_non_incr::__rust_end_short_backtrace
  44:     0x7f6ddbebdfbf - rustc_hir_analysis[1799a6ccb3095d3d]::coherence::coherent_trait
  45:     0x7f6ddbebdee3 - rustc_query_impl[60cfa4eef1128f6c]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[60cfa4eef1128f6c]::query_impl::coherent_trait::dynamic_query::{closure#2}::{closure#0}, rustc_middle[9f94bb95ba4eb693]::query::erase::Erased<[u8; 1usize]>>
  46:     0x7f6ddbb128b4 - rustc_query_system[30cc65df29d7d3a8]::query::plumbing::try_execute_query::<rustc_query_impl[60cfa4eef1128f6c]::DynamicConfig<rustc_query_system[30cc65df29d7d3a8]::query::caches::DefIdCache<rustc_middle[9f94bb95ba4eb693]::query::erase::Erased<[u8; 1usize]>>, false, false, false>, rustc_query_impl[60cfa4eef1128f6c]::plumbing::QueryCtxt, false>
  47:     0x7f6ddbd05e4d - rustc_query_impl[60cfa4eef1128f6c]::query_impl::coherent_trait::get_query_non_incr::__rust_end_short_backtrace
  48:     0x7f6ddb7cfd9a - rustc_hir_analysis[1799a6ccb3095d3d]::check_crate
  49:     0x7f6ddbf8bd92 - rustc_interface[57a4cb1189ffa880]::passes::analysis
  50:     0x7f6ddbf8b9df - rustc_query_impl[60cfa4eef1128f6c]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[60cfa4eef1128f6c]::query_impl::analysis::dynamic_query::{closure#2}::{closure#0}, rustc_middle[9f94bb95ba4eb693]::query::erase::Erased<[u8; 1usize]>>
  51:     0x7f6ddc324372 - rustc_query_system[30cc65df29d7d3a8]::query::plumbing::try_execute_query::<rustc_query_impl[60cfa4eef1128f6c]::DynamicConfig<rustc_query_system[30cc65df29d7d3a8]::query::caches::SingleCache<rustc_middle[9f94bb95ba4eb693]::query::erase::Erased<[u8; 1usize]>>, false, false, false>, rustc_query_impl[60cfa4eef1128f6c]::plumbing::QueryCtxt, false>
  52:     0x7f6ddc3240d5 - rustc_query_impl[60cfa4eef1128f6c]::query_impl::analysis::get_query_non_incr::__rust_end_short_backtrace
  53:     0x7f6ddc33a582 - rustc_interface[57a4cb1189ffa880]::interface::run_compiler::<core[8df037f8ced6ea1f]::result::Result<(), rustc_span[4a89bdba9678f8e0]::ErrorGuaranteed>, rustc_driver_impl[a7481a600b2f11a0]::run_compiler::{closure#0}>::{closure#0}
  54:     0x7f6ddc3d2b46 - std[3acc11fb688f3d76]::sys_common::backtrace::__rust_begin_short_backtrace::<rustc_interface[57a4cb1189ffa880]::util::run_in_thread_with_globals<rustc_interface[57a4cb1189ffa880]::util::run_in_thread_pool_with_globals<rustc_interface[57a4cb1189ffa880]::interface::run_compiler<core[8df037f8ced6ea1f]::result::Result<(), rustc_span[4a89bdba9678f8e0]::ErrorGuaranteed>, rustc_driver_impl[a7481a600b2f11a0]::run_compiler::{closure#0}>::{closure#0}, core[8df037f8ced6ea1f]::result::Result<(), rustc_span[4a89bdba9678f8e0]::ErrorGuaranteed>>::{closure#0}, core[8df037f8ced6ea1f]::result::Result<(), rustc_span[4a89bdba9678f8e0]::ErrorGuaranteed>>::{closure#0}::{closure#0}, core[8df037f8ced6ea1f]::result::Result<(), rustc_span[4a89bdba9678f8e0]::ErrorGuaranteed>>
  55:     0x7f6ddc3d2973 - <<std[3acc11fb688f3d76]::thread::Builder>::spawn_unchecked_<rustc_interface[57a4cb1189ffa880]::util::run_in_thread_with_globals<rustc_interface[57a4cb1189ffa880]::util::run_in_thread_pool_with_globals<rustc_interface[57a4cb1189ffa880]::interface::run_compiler<core[8df037f8ced6ea1f]::result::Result<(), rustc_span[4a89bdba9678f8e0]::ErrorGuaranteed>, rustc_driver_impl[a7481a600b2f11a0]::run_compiler::{closure#0}>::{closure#0}, core[8df037f8ced6ea1f]::result::Result<(), rustc_span[4a89bdba9678f8e0]::ErrorGuaranteed>>::{closure#0}, core[8df037f8ced6ea1f]::result::Result<(), rustc_span[4a89bdba9678f8e0]::ErrorGuaranteed>>::{closure#0}::{closure#0}, core[8df037f8ced6ea1f]::result::Result<(), rustc_span[4a89bdba9678f8e0]::ErrorGuaranteed>>::{closure#1} as core[8df037f8ced6ea1f]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
  56:     0x7f6dd7597eb5 - <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once::h61e4d902e063b23d
                               at /rustc/6cc4843512d613f51ec81aba689180c31b0b28b6/library/alloc/src/boxed.rs:2016:9
  57:     0x7f6dd7597eb5 - <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once::hfa3eaf4f75275f59
                               at /rustc/6cc4843512d613f51ec81aba689180c31b0b28b6/library/alloc/src/boxed.rs:2016:9
  58:     0x7f6dd7597eb5 - std::sys::pal::unix::thread::Thread::new::thread_start::hb901d27f412b0ecd
                               at /rustc/6cc4843512d613f51ec81aba689180c31b0b28b6/library/std/src/sys/pal/unix/thread.rs:108:17
  59:     0x7f6dd73819eb - <unknown>
  60:     0x7f6dd74057cc - <unknown>
  61:                0x0 - <unknown>

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: rustc 1.78.0-nightly (6cc484351 2024-02-10) running on x86_64-unknown-linux-gnu

note: compiler flags: -Z next-solver=coherence -Z dump-mir-dir=dir

query stack during panic:
#0 [specialization_graph_of] building specialization graph of trait `Bop`
#1 [coherent_trait] coherence checking all impls of trait `Bop`
#2 [analysis] running analysis passes on this crate
end of query stack
error: aborting due to 3 previous errors

Some errors have detailed explanations: E0601, E0658.
For more information about an error, try `rustc --explain E0601`.

Activity

  1. added
    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.
    C-bugCategory: This is a bug.
    WG-trait-system-refactorThe Rustc Trait System Refactor Initiative (-Znext-solver)
    on Feb 10, 2024
  2. added
    needs-triageThis issue may need triage. Remove when done. See docs forge.rust-lang.org/release/issue-triaging
    on Feb 10, 2024
  3. matthiaskrgr commented on Feb 10, 2024

    @matthiaskrgr
    MemberAuthor
  4. added and removed
    needs-triageThis issue may need triage. Remove when done. See docs forge.rust-lang.org/release/issue-triaging
    on Feb 10, 2024
  5. added 2 commits that reference this issue on Feb 12, 2024
    40041af
    733f93d
  6. added a commit that references this issue on Feb 12, 2024
    ca34c45
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Labels

C-bugCategory: This is a bug.F-type_alias_impl_trait`#[feature(type_alias_impl_trait)]`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.WG-trait-system-refactorThe Rustc Trait System Refactor Initiative (-Znext-solver)

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions