Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ICE when trait alias with projection predicate is used in trait object types #108320

Closed
lowr opened this issue Feb 21, 2023 · 2 comments
Closed
Labels
C-bug Category: This is a bug. F-trait_alias `#![feature(trait_alias)]` I-ICE Issue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️ T-compiler Relevant to the compiler team, which will review and decide on the PR/issue.

Comments

@lowr
Copy link
Contributor

lowr commented Feb 21, 2023

Code

#![feature(trait_alias)]

trait C {
    type Assoc;
}
trait D {}
trait Alias<T> = D where usize: C<Assoc = i32>;

fn foo(_: &dyn Alias<()>) {}

Meta

rustc --version --verbose:

rustc 1.69.0-nightly (5243ea5c2 2023-02-20)                                                                                                                                          
binary: rustc                                                                                                                                                                        
commit-hash: 5243ea5c29b136137c36bd773e5baa663790e097                                                                                                                                
commit-date: 2023-02-20                                                                                                                                                              
host: x86_64-unknown-linux-gnu                                                                                                                                                       
release: 1.69.0-nightly                                                                                                                                                              
LLVM version: 15.0.7

Error output

thread 'rustc' panicked at 'assertion failed: `(left == right)`
  left: `usize`,
 right: `FreshTy(0)`', compiler/rustc_hir_analysis/src/astconv/mod.rs:1571:17
Backtrace

   0:     0x7f9a25a92b3a - std::backtrace_rs::backtrace::libunwind::trace::h12b28b68eb26bd66
                               at /rustc/5243ea5c29b136137c36bd773e5baa663790e097/library/std/src/../../backtrace/src/backtrace/libunwind.rs:93:5
   1:     0x7f9a25a92b3a - std::backtrace_rs::backtrace::trace_unsynchronized::h200511c4f08d08ef
                               at /rustc/5243ea5c29b136137c36bd773e5baa663790e097/library/std/src/../../backtrace/src/backtrace/mod.rs:66:5
   2:     0x7f9a25a92b3a - std::sys_common::backtrace::_print_fmt::h73434ecb073097d4
                               at /rustc/5243ea5c29b136137c36bd773e5baa663790e097/library/std/src/sys_common/backtrace.rs:65:5
   3:     0x7f9a25a92b3a - <std::sys_common::backtrace::_print::DisplayBacktrace as core::fmt::Display>::fmt::h7808d0be79b5d1ec
                               at /rustc/5243ea5c29b136137c36bd773e5baa663790e097/library/std/src/sys_common/backtrace.rs:44:22
   4:     0x7f9a25af2b0e - core::fmt::write::hafefc351fbfaa415
                               at /rustc/5243ea5c29b136137c36bd773e5baa663790e097/library/core/src/fmt/mod.rs:1232:17
   5:     0x7f9a25a82fe5 - std::io::Write::write_fmt::hc1d6b1569406505e
                               at /rustc/5243ea5c29b136137c36bd773e5baa663790e097/library/std/src/io/mod.rs:1684:15
   6:     0x7f9a25a92905 - std::sys_common::backtrace::_print::hd45cfc7e9c4b34ea
                               at /rustc/5243ea5c29b136137c36bd773e5baa663790e097/library/std/src/sys_common/backtrace.rs:47:5
   7:     0x7f9a25a92905 - std::sys_common::backtrace::print::h5e03fe95d9240812
                               at /rustc/5243ea5c29b136137c36bd773e5baa663790e097/library/std/src/sys_common/backtrace.rs:34:9
   8:     0x7f9a25a9567f - std::panicking::default_hook::{{closure}}::hf95a102fbb1a711a
                               at /rustc/5243ea5c29b136137c36bd773e5baa663790e097/library/std/src/panicking.rs:267:22
   9:     0x7f9a25a953bb - std::panicking::default_hook::h0e224ad71e4cf3c6
                               at /rustc/5243ea5c29b136137c36bd773e5baa663790e097/library/std/src/panicking.rs:286:9
  10:     0x7f9a28d47cb5 - <rustc_driver_impl[6598fd657388da4]::DEFAULT_HOOK::{closure#0}::{closure#0} as core[e6e25e2e3d2ed08b]::ops::function::FnOnce<(&core[e6e25e2e3d2ed08b]::panic::panic_info::PanicInfo,)>>::call_once::{shim:vtable#0}
  11:     0x7f9a25a95ebd - <alloc::boxed::Box<F,A> as core::ops::function::Fn<Args>>::call::ha8273e13c0202daf
                               at /rustc/5243ea5c29b136137c36bd773e5baa663790e097/library/alloc/src/boxed.rs:2002:9
  12:     0x7f9a25a95ebd - std::panicking::rust_panic_with_hook::hfa97f871b11d16ea
                               at /rustc/5243ea5c29b136137c36bd773e5baa663790e097/library/std/src/panicking.rs:692:13
  13:     0x7f9a25a95c39 - std::panicking::begin_panic_handler::{{closure}}::hd45660eb8177c8ba
                               at /rustc/5243ea5c29b136137c36bd773e5baa663790e097/library/std/src/panicking.rs:579:13
  14:     0x7f9a25a92fa6 - std::sys_common::backtrace::__rust_end_short_backtrace::h24cc9aac7fd6776a
                               at /rustc/5243ea5c29b136137c36bd773e5baa663790e097/library/std/src/sys_common/backtrace.rs:137:18
  15:     0x7f9a25a95942 - rust_begin_unwind
                               at /rustc/5243ea5c29b136137c36bd773e5baa663790e097/library/std/src/panicking.rs:575:5
  16:     0x7f9a25aef4b3 - core::panicking::panic_fmt::he7b2d47a249dbf70
                               at /rustc/5243ea5c29b136137c36bd773e5baa663790e097/library/core/src/panicking.rs:64:14
  17:     0x7f9a25aef8cf - core::panicking::assert_failed_inner::he10230044ecb69e8
  18:     0x7f9a28e8d6bc - core[e6e25e2e3d2ed08b]::panicking::assert_failed::<rustc_middle[6454e605f0b552d3]::ty::Ty, rustc_middle[6454e605f0b552d3]::ty::Ty>
  19:     0x7f9a2837aafc - <rustc_middle[6454e605f0b552d3]::ty::sty::Binder<rustc_middle[6454e605f0b552d3]::ty::ProjectionPredicate>>::map_bound::<<dyn rustc_hir_analysis[63c8f16ce92b0e6a]::astconv::AstConv>::conv_object_ty_poly_trait_ref::{closure#13}::{closure#0}, rustc_middle[6454e605f0b552d3]::ty::sty::ExistentialProjection>
  20:     0x7f9a27ab6ff4 - <core[e6e25e2e3d2ed08b]::iter::adapters::chain::Chain<core[e6e25e2e3d2ed08b]::iter::adapters::chain::Chain<core[e6e25e2e3d2ed08b]::iter::adapters::map::Map<core[e6e25e2e3d2ed08b]::iter::adapters::map::Map<core[e6e25e2e3d2ed08b]::slice::iter::Iter<rustc_trait_selection[e5de21e4b6b03324]::traits::util::TraitAliasExpansionInfo>, <dyn rustc_hir_analysis[63c8f16ce92b0e6a]::astconv::AstConv>::conv_object_ty_poly_trait_ref::{closure#12}>, <dyn rustc_hir_analysis[63c8f16ce92b0e6a]::astconv::AstConv>::conv_object_ty_poly_trait_ref::{closure#14}>, core[e6e25e2e3d2ed08b]::iter::adapters::map::Map<core[e6e25e2e3d2ed08b]::iter::adapters::map::Map<core[e6e25e2e3d2ed08b]::slice::iter::Iter<(rustc_middle[6454e605f0b552d3]::ty::sty::Binder<rustc_middle[6454e605f0b552d3]::ty::ProjectionPredicate>, rustc_span[5f03c33a4a98a2db]::span_encoding::Span)>, <dyn rustc_hir_analysis[63c8f16ce92b0e6a]::astconv::AstConv>::conv_object_ty_poly_trait_ref::{closure#13}>, <dyn rustc_hir_analysis[63c8f16ce92b0e6a]::astconv::AstConv>::conv_object_ty_poly_trait_ref::{closure#16}>>, core[e6e25e2e3d2ed08b]::iter::adapters::map::Map<alloc[3f8e9f68cf11003c]::vec::into_iter::IntoIter<rustc_trait_selection[e5de21e4b6b03324]::traits::util::TraitAliasExpansionInfo>, <dyn rustc_hir_analysis[63c8f16ce92b0e6a]::astconv::AstConv>::conv_object_ty_poly_trait_ref::{closure#15}>> as core[e6e25e2e3d2ed08b]::iter::traits::iterator::Iterator>::next
  21:     0x7f9a27ab696b - <smallvec[777b36135c6d6da2]::SmallVec<[rustc_middle[6454e605f0b552d3]::ty::sty::Binder<rustc_middle[6454e605f0b552d3]::ty::sty::ExistentialPredicate>; 8usize]> as core[e6e25e2e3d2ed08b]::iter::traits::collect::Extend<<[rustc_middle[6454e605f0b552d3]::ty::sty::Binder<rustc_middle[6454e605f0b552d3]::ty::sty::ExistentialPredicate>; 8usize] as smallvec[777b36135c6d6da2]::Array>::Item>>::extend::<core[e6e25e2e3d2ed08b]::iter::adapters::chain::Chain<core[e6e25e2e3d2ed08b]::iter::adapters::chain::Chain<core[e6e25e2e3d2ed08b]::iter::adapters::map::Map<core[e6e25e2e3d2ed08b]::iter::adapters::map::Map<core[e6e25e2e3d2ed08b]::slice::iter::Iter<rustc_trait_selection[e5de21e4b6b03324]::traits::util::TraitAliasExpansionInfo>, <dyn rustc_hir_analysis[63c8f16ce92b0e6a]::astconv::AstConv>::conv_object_ty_poly_trait_ref::{closure#12}>, <dyn rustc_hir_analysis[63c8f16ce92b0e6a]::astconv::AstConv>::conv_object_ty_poly_trait_ref::{closure#14}>, core[e6e25e2e3d2ed08b]::iter::adapters::map::Map<core[e6e25e2e3d2ed08b]::iter::adapters::map::Map<core[e6e25e2e3d2ed08b]::slice::iter::Iter<(rustc_middle[6454e605f0b552d3]::ty::sty::Binder<rustc_middle[6454e605f0b552d3]::ty::ProjectionPredicate>, rustc_span[5f03c33a4a98a2db]::span_encoding::Span)>, <dyn rustc_hir_analysis[63c8f16ce92b0e6a]::astconv::AstConv>::conv_object_ty_poly_trait_ref::{closure#13}>, <dyn rustc_hir_analysis[63c8f16ce92b0e6a]::astconv::AstConv>::conv_object_ty_poly_trait_ref::{closure#16}>>, core[e6e25e2e3d2ed08b]::iter::adapters::map::Map<alloc[3f8e9f68cf11003c]::vec::into_iter::IntoIter<rustc_trait_selection[e5de21e4b6b03324]::traits::util::TraitAliasExpansionInfo>, <dyn rustc_hir_analysis[63c8f16ce92b0e6a]::astconv::AstConv>::conv_object_ty_poly_trait_ref::{closure#15}>>>
  22:     0x7f9a27ab0762 - <dyn rustc_hir_analysis[63c8f16ce92b0e6a]::astconv::AstConv>::conv_object_ty_poly_trait_ref
  23:     0x7f9a27a8dd39 - <dyn rustc_hir_analysis[63c8f16ce92b0e6a]::astconv::AstConv>::ast_ty_to_ty_inner::{closure#0}
  24:     0x7f9a27a8d710 - <dyn rustc_hir_analysis[63c8f16ce92b0e6a]::astconv::AstConv>::ast_ty_to_ty_inner::{closure#0}
  25:     0x7f9a27c890ca - <dyn rustc_hir_analysis[63c8f16ce92b0e6a]::astconv::AstConv>::ty_of_fn::{closure#0}
  26:     0x7f9a27f1dd1d - rustc_hir_analysis[63c8f16ce92b0e6a]::collect::infer_return_ty_for_fn_sig
  27:     0x7f9a27f1bddb - rustc_hir_analysis[63c8f16ce92b0e6a]::collect::fn_sig
  28:     0x7f9a27f1a2d9 - rustc_query_system[e1d6d01a6f4eeda5]::query::plumbing::get_query::<rustc_query_impl[2383e868c5804bd1]::queries::fn_sig, rustc_query_impl[2383e868c5804bd1]::plumbing::QueryCtxt, rustc_middle[6454e605f0b552d3]::dep_graph::dep_node::DepKind>
  29:     0x7f9a27f19f48 - <rustc_query_impl[2383e868c5804bd1]::Queries as rustc_middle[6454e605f0b552d3]::ty::query::QueryEngine>::fn_sig
  30:     0x7f9a2741c8ee - <rustc_hir_analysis[63c8f16ce92b0e6a]::collect::CollectItemTypesVisitor as rustc_hir[bfe16e97a69c80df]::intravisit::Visitor>::visit_item
  31:     0x7f9a2741b665 - <rustc_middle[6454e605f0b552d3]::hir::map::Map>::visit_item_likes_in_module::<rustc_hir_analysis[63c8f16ce92b0e6a]::collect::CollectItemTypesVisitor>
  32:     0x7f9a2741b57c - rustc_hir_analysis[63c8f16ce92b0e6a]::collect::collect_mod_item_types
  33:     0x7f9a2834accf - rustc_query_system[e1d6d01a6f4eeda5]::query::plumbing::try_execute_query::<rustc_query_impl[2383e868c5804bd1]::queries::collect_mod_item_types, rustc_query_impl[2383e868c5804bd1]::plumbing::QueryCtxt>
  34:     0x7f9a2874640d - <rustc_query_impl[2383e868c5804bd1]::Queries as rustc_middle[6454e605f0b552d3]::ty::query::QueryEngine>::collect_mod_item_types
  35:     0x7f9a27158fff - <rustc_middle[6454e605f0b552d3]::hir::map::Map>::for_each_module::<rustc_hir_analysis[63c8f16ce92b0e6a]::check_crate::{closure#0}::{closure#0}::{closure#0}>
  36:     0x7f9a27156aec - rustc_hir_analysis[63c8f16ce92b0e6a]::check_crate
  37:     0x7f9a2714e222 - rustc_interface[a4c456754224e9c7]::passes::analysis
  38:     0x7f9a28574ef2 - rustc_query_system[e1d6d01a6f4eeda5]::query::plumbing::try_execute_query::<rustc_query_impl[2383e868c5804bd1]::queries::analysis, rustc_query_impl[2383e868c5804bd1]::plumbing::QueryCtxt>
  39:     0x7f9a2873fd4a - <rustc_query_impl[2383e868c5804bd1]::Queries as rustc_middle[6454e605f0b552d3]::ty::query::QueryEngine>::analysis
  40:     0x7f9a27ff3bf6 - <rustc_middle[6454e605f0b552d3]::ty::context::GlobalCtxt>::enter::<rustc_driver_impl[6598fd657388da4]::run_compiler::{closure#1}::{closure#2}::{closure#3}, core[e6e25e2e3d2ed08b]::result::Result<(), rustc_errors[e1f9be18bff28896]::ErrorGuaranteed>>
  41:     0x7f9a27ff2f07 - <rustc_interface[a4c456754224e9c7]::interface::Compiler>::enter::<rustc_driver_impl[6598fd657388da4]::run_compiler::{closure#1}::{closure#2}, core[e6e25e2e3d2ed08b]::result::Result<core[e6e25e2e3d2ed08b]::option::Option<rustc_interface[a4c456754224e9c7]::queries::Linker>, rustc_errors[e1f9be18bff28896]::ErrorGuaranteed>>
  42:     0x7f9a27ff0fe4 - rustc_span[5f03c33a4a98a2db]::with_source_map::<core[e6e25e2e3d2ed08b]::result::Result<(), rustc_errors[e1f9be18bff28896]::ErrorGuaranteed>, rustc_interface[a4c456754224e9c7]::interface::run_compiler<core[e6e25e2e3d2ed08b]::result::Result<(), rustc_errors[e1f9be18bff28896]::ErrorGuaranteed>, rustc_driver_impl[6598fd657388da4]::run_compiler::{closure#1}>::{closure#0}::{closure#0}>
  43:     0x7f9a27ff054d - std[33065b4dbfe75df]::sys_common::backtrace::__rust_begin_short_backtrace::<rustc_interface[a4c456754224e9c7]::util::run_in_thread_pool_with_globals<rustc_interface[a4c456754224e9c7]::interface::run_compiler<core[e6e25e2e3d2ed08b]::result::Result<(), rustc_errors[e1f9be18bff28896]::ErrorGuaranteed>, rustc_driver_impl[6598fd657388da4]::run_compiler::{closure#1}>::{closure#0}, core[e6e25e2e3d2ed08b]::result::Result<(), rustc_errors[e1f9be18bff28896]::ErrorGuaranteed>>::{closure#0}::{closure#0}, core[e6e25e2e3d2ed08b]::result::Result<(), rustc_errors[e1f9be18bff28896]::ErrorGuaranteed>>
  44:     0x7f9a27feff9c - <<std[33065b4dbfe75df]::thread::Builder>::spawn_unchecked_<rustc_interface[a4c456754224e9c7]::util::run_in_thread_pool_with_globals<rustc_interface[a4c456754224e9c7]::interface::run_compiler<core[e6e25e2e3d2ed08b]::result::Result<(), rustc_errors[e1f9be18bff28896]::ErrorGuaranteed>, rustc_driver_impl[6598fd657388da4]::run_compiler::{closure#1}>::{closure#0}, core[e6e25e2e3d2ed08b]::result::Result<(), rustc_errors[e1f9be18bff28896]::ErrorGuaranteed>>::{closure#0}::{closure#0}, core[e6e25e2e3d2ed08b]::result::Result<(), rustc_errors[e1f9be18bff28896]::ErrorGuaranteed>>::{closure#1} as core[e6e25e2e3d2ed08b]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
  45:     0x7f9a25a9fd93 - <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once::hfdd75e8d431ebcab
                               at /rustc/5243ea5c29b136137c36bd773e5baa663790e097/library/alloc/src/boxed.rs:1988:9
  46:     0x7f9a25a9fd93 - <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once::hac9c6d75eef1e452
                               at /rustc/5243ea5c29b136137c36bd773e5baa663790e097/library/alloc/src/boxed.rs:1988:9
  47:     0x7f9a25a9fd93 - std::sys::unix::thread::Thread::new::thread_start::h1e79a6f313450114
                               at /rustc/5243ea5c29b136137c36bd773e5baa663790e097/library/std/src/sys/unix/thread.rs:108:17
  48:     0x7f9a25962609 - start_thread
  49:     0x7f9a25885133 - clone
  50:                0x0 - <unknown>

@lowr lowr added C-bug Category: This is a bug. I-ICE Issue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️ T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. labels Feb 21, 2023
@lowr
Copy link
Contributor Author

lowr commented Feb 21, 2023

It seems we return every predicate from where clause as superpredicates for trait aliases, but apparently conv_object_ty_poly_trait_ref() expects every predicate to be a bound on Self.

cc #41517
@rustbot label +F-trait_alias

@rustbot rustbot added the F-trait_alias `#![feature(trait_alias)]` label Feb 21, 2023
@compiler-errors
Copy link
Member

Thanks for the error report -- this is a duplicate of #106238, and should be fixed by #107614.

@compiler-errors compiler-errors closed this as not planned Won't fix, can't repro, duplicate, stale Feb 21, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
C-bug Category: This is a bug. F-trait_alias `#![feature(trait_alias)]` I-ICE Issue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️ T-compiler Relevant to the compiler team, which will review and decide on the PR/issue.
Projects
None yet
Development

No branches or pull requests

3 participants