Skip to content

ICE: Shouldn't expect a placeholder type in implied bounds (yet) When return type in trait impl is &impl Trait #118286

Description

@nikvoid

Code

pub fn main() {

}

pub trait Iced {
    fn get(&self) -> &impl Sized;
}

/// Impl causes ICE
impl Iced for () {
    fn get(&self) -> &impl Sized { &() }
} 

Meta

rustc --version --verbose:

rustc 1.76.0-nightly (37b2813a7 2023-11-24)
binary: rustc
commit-hash: 37b2813a7be580ef59048a6bd08444c79e5cc97f
commit-date: 2023-11-24
host: x86_64-pc-windows-msvc
release: 1.76.0-nightly
LLVM version: 17.0.5

Error output

thread 'rustc' panicked at compiler\rustc_trait_selection\src\traits\query\type_op\implied_outlives_bounds.rs:211:21:
not implemented: Shouldn't expect a placeholder type in implied bounds (yet)
stack backtrace:
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 attach the file at `E:\projects\rust-test\rustc-ice-2023-11-25T15_24_27-2620.txt` to your bug report

note: compiler flags: --crate-type bin -C embed-bitcode=no -C debuginfo=2 -C incremental=[REDACTED] -C target-cpu=native

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

query stack during panic:
#0 [implied_outlives_bounds] computing implied outlives bounds for `&^1`
#1 [collect_return_position_impl_trait_in_trait_tys] comparing an impl and trait method signature, inferring any hidden `impl Trait` types in the process
#2 [type_of] computing type of `<impl at src\bin\ice.rs:10:1: 10:17>::{opaque#0}`
#3 [check_mod_impl_wf] checking that impls are well-formed in top-level module
#4 [analysis] running analysis passes on this crate
end of query stack
Backtrace

thread 'rustc' panicked at compiler\rustc_trait_selection\src\traits\query\type_op\implied_outlives_bounds.rs:211:21:
not implemented: Shouldn't expect a placeholder type in implied bounds (yet)
stack backtrace:
   0:     0x7ffa1a14ddff - std::backtrace::Backtrace::force_capture::h3f668b79418f22f9
   1:     0x7ffa1a14dd64 - std::backtrace::Backtrace::force_capture::h3f668b79418f22f9
   2:     0x7ffa102f5949 - <tracing_subscriber[c47e476d72039508]::util::TryInitError as core[5caf4f20ff5a4def]::fmt::Display>::fmt
   3:     0x7ffa1a166903 - std::panicking::rust_panic_with_hook::h81a622fcd9e6c3bd
   4:     0x7ffa1a16676b - <std::panicking::begin_panic_handler::StaticStrPayload as core::panic::PanicPayload>::take_box::heaf78657578f08f1
   5:     0x7ffa1a163949 - <std::sys_common::backtrace::_print::DisplayBacktrace as core::fmt::Display>::fmt::h455546a8643c8c2e
   6:     0x7ffa1a1664b4 - rust_begin_unwind
   7:     0x7ffa1a1bb1e7 - core::panicking::panic_fmt::ha0f2e731394baff3
   8:     0x7ffa0fde00af - rustc_trait_selection[e2e03292c3acd521]::traits::normalize_param_env_or_error
   9:     0x7ffa0fe253da - <rustc_infer[295366c5eee344e]::traits::project::ProjectionCacheKey as rustc_trait_selection[e2e03292c3acd521]::traits::project::ProjectionCacheKeyExt>::from_poly_projection_predicate
  10:     0x7ffa0fde435c - rustc_trait_selection[e2e03292c3acd521]::traits::query::type_op::implied_outlives_bounds::compute_implied_outlives_bounds_inner
  11:     0x7ffa0fb26a44 - rustc_traits[f20ef36d848666e1]::type_op::type_op_prove_predicate
  12:     0x7ffa0fb17557 - rustc_traits[f20ef36d848666e1]::implied_outlives_bounds::implied_outlives_bounds
  13:     0x7ffa0fb64493 - <rustc_query_impl[c8293b5f85111528]::plumbing::QueryCtxt as rustc_query_system[cef96664c9ada928]::query::QueryContext>::load_side_effects
  14:     0x7ffa0fb9f2ed - <rustc_query_impl[c8293b5f85111528]::plumbing::QueryCtxt as rustc_query_system[cef96664c9ada928]::query::QueryContext>::load_side_effects
  15:     0x7ffa0eea03e2 - <dyn std[6105eaff722720a9]::io::Write as nu_ansi_term[58d86d1c798192ea]::write::AnyWrite>::write_str
  16:     0x7ffa0fdfdd4b - <rustc_infer[295366c5eee344e]::infer::InferCtxt as rustc_trait_selection[e2e03292c3acd521]::traits::outlives_bounds::InferCtxtExt>::implied_outlives_bounds
  17:     0x7ffa0f5104e3 - <rustc_hir_analysis[28b5b319a1019660]::autoderef::Autoderef>::into_obligations
  18:     0x7ffa1072ad6c - rustc_hir_analysis[28b5b319a1019660]::check::compare_impl_item::collect_return_position_impl_trait_in_trait_tys
  19:     0x7ffa10e45d37 - <rustc_query_impl[c8293b5f85111528]::plumbing::QueryCtxt as rustc_query_system[cef96664c9ada928]::query::QueryContext>::depth_limit_error
  20:     0x7ffa10e9deb3 - <rustc_query_impl[c8293b5f85111528]::plumbing::QueryCtxt as rustc_query_system[cef96664c9ada928]::query::QueryContext>::depth_limit_error
  21:     0x7ffa0fbdb257 - <rustc_query_impl[c8293b5f85111528]::plumbing::QueryCtxt as rustc_query_system[cef96664c9ada928]::query::QueryContext>::load_side_effects
  22:     0x7ffa10e28301 - <rustc_span[bb17ac722f92f365]::def_id::LocalDefId as rustc_query_impl[c8293b5f85111528]::profiling_support::SpecIntoSelfProfilingString>::spec_to_self_profile_string
  23:     0x7ffa0f4ea4eb - <rustc_hir_analysis[28b5b319a1019660]::collect::resolve_bound_vars::BoundVarContext as rustc_hir[6c53a7437ef4457d]::intravisit::Visitor>::visit_lifetime
  24:     0x7ffa0f4f416c - rustc_hir_analysis[28b5b319a1019660]::collect::type_of::type_of
  25:     0x7ffa0fb6494b - <rustc_query_impl[c8293b5f85111528]::plumbing::QueryCtxt as rustc_query_system[cef96664c9ada928]::query::QueryContext>::load_side_effects
  26:     0x7ffa0fb7b6c1 - <rustc_query_impl[c8293b5f85111528]::plumbing::QueryCtxt as rustc_query_system[cef96664c9ada928]::query::QueryContext>::load_side_effects
  27:     0x7ffa0fbdb257 - <rustc_query_impl[c8293b5f85111528]::plumbing::QueryCtxt as rustc_query_system[cef96664c9ada928]::query::QueryContext>::load_side_effects
  28:     0x7ffa0fb59848 - rustc_query_impl[c8293b5f85111528]::query_callbacks
  29:     0x7ffa0f54353c - rustc_hir_analysis[28b5b319a1019660]::check::wfcheck::check_well_formed
  30:     0x7ffa0f543a93 - rustc_hir_analysis[28b5b319a1019660]::check::wfcheck::check_well_formed
  31:     0x7ffa0f51f039 - rustc_hir_analysis[28b5b319a1019660]::check::wfcheck::check_well_formed
  32:     0x7ffa0ede954f - rustc_query_impl[c8293b5f85111528]::profiling_support::alloc_self_profile_query_strings
  33:     0x7ffa0edcc76f - rustc_query_impl[c8293b5f85111528]::dynamic_queries
  34:     0x7ffa0edef001 - rustc_query_impl[c8293b5f85111528]::profiling_support::alloc_self_profile_query_strings
  35:     0x7ffa0ee3d7d3 - rustc_query_impl[c8293b5f85111528]::profiling_support::alloc_self_profile_query_strings
  36:     0x7ffa0eec339c - <dyn std[6105eaff722720a9]::io::Write as nu_ansi_term[58d86d1c798192ea]::write::AnyWrite>::write_str
  37:     0x7ffa0f4a38f3 - rustc_hir_analysis[28b5b319a1019660]::check_crate
  38:     0x7ffa0f27427d - rustc_interface[141774b3faf88461]::passes::analysis
  39:     0x7ffa0edeba2d - rustc_query_impl[c8293b5f85111528]::profiling_support::alloc_self_profile_query_strings
  40:     0x7ffa0eece209 - <dyn std[6105eaff722720a9]::io::Write as nu_ansi_term[58d86d1c798192ea]::write::AnyWrite>::write_str
  41:     0x7ffa0edeec3c - rustc_query_impl[c8293b5f85111528]::profiling_support::alloc_self_profile_query_strings
  42:     0x7ffa0ee14577 - rustc_query_impl[c8293b5f85111528]::profiling_support::alloc_self_profile_query_strings
  43:     0x7ffa0eea9d47 - <dyn std[6105eaff722720a9]::io::Write as nu_ansi_term[58d86d1c798192ea]::write::AnyWrite>::write_str
  44:     0x7ffa0c2f999d - rustc_driver_impl[7d4818c60294d5bb]::main
  45:     0x7ffa0c30c064 - <rustc_middle[903a3d62136ee3d2]::ty::SymbolName as core[5caf4f20ff5a4def]::fmt::Debug>::fmt
  46:     0x7ffa0c300b33 - <rustc_middle[903a3d62136ee3d2]::ty::SymbolName as core[5caf4f20ff5a4def]::fmt::Debug>::fmt
  47:     0x7ffa0c30865c - <rustc_middle[903a3d62136ee3d2]::ty::SymbolName as core[5caf4f20ff5a4def]::fmt::Debug>::fmt
  48:     0x7ffa0c301661 - <rustc_middle[903a3d62136ee3d2]::ty::SymbolName as core[5caf4f20ff5a4def]::fmt::Debug>::fmt
  49:     0x7ffa0c30ae5f - <rustc_middle[903a3d62136ee3d2]::ty::SymbolName as core[5caf4f20ff5a4def]::fmt::Debug>::fmt
  50:     0x7ffa0c30af78 - <rustc_middle[903a3d62136ee3d2]::ty::SymbolName as core[5caf4f20ff5a4def]::fmt::Debug>::fmt
  51:     0x7ffa1a178a7c - std::sys::windows::thread::Thread::new::h28d06cd1c8f6e0e9
  52:     0x7ffa75d926ad - BaseThreadInitThunk
  53:     0x7ffa7754aa68 - RtlUserThreadStart


rustc version: 1.76.0-nightly (37b2813a7 2023-11-24)
platform: x86_64-pc-windows-msvc

query stack during panic:
#0 [implied_outlives_bounds] computing implied outlives bounds for `&^1`
#1 [collect_return_position_impl_trait_in_trait_tys] comparing an impl and trait method signature, inferring any hidden `impl Trait` types in the process
#2 [type_of] computing type of `<impl at src\bin\ice.rs:10:1: 10:17>::{opaque#0}`
#3 [check_mod_impl_wf] checking that impls are well-formed in top-level module
#4 [analysis] running analysis passes on this crate
end of query stack

Activity

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

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions