thread 'rustc' panicked at compiler/rustc_const_eval/src/interpret/discriminant.rs:288:22:
overflow computing relative variant idx
stack backtrace:
0: _rust_begin_unwind
1: core::panicking::panic_fmt
2: core::option::expect_failed
3: rustc_const_eval::const_eval::tag_for_variant_provider
[... omitted 2 frames ...]
4: <rustc_transmute::layout::tree::Tree<rustc_transmute::layout::rustc::Def, rustc_transmute::layout::rustc::Ref>>::from_enum
5: <rustc_transmute::rustc::TransmuteTypeEnv>::is_transmutable
6: <rustc_trait_selection::traits::select::SelectionContext>::confirm_candidate
7: <rustc_trait_selection::traits::select::SelectionContext>::evaluate_candidate::{closure#0}::{closure#0}
8: <rustc_infer::infer::InferCtxt>::probe::<core::result::Result<rustc_middle::traits::select::EvaluationResult, rustc_middle::traits::select::OverflowError>, <rustc_trait_selection::traits::select::SelectionContext>::evaluation_probe<<rustc_trait_selection::traits::select::SelectionContext>::evaluate_candidate::{closure#0}::{closure#0}>::{closure#0}>
9: <rustc_trait_selection::traits::select::SelectionContext>::evaluate_trait_predicate_recursively::{closure#0}::{closure#1}
10: <rustc_trait_selection::traits::select::SelectionContext>::evaluate_trait_predicate_recursively::{closure#0}
11: <rustc_trait_selection::traits::select::SelectionContext>::evaluate_predicate_recursively::{closure#0}::{closure#0}
12: <rustc_trait_selection::traits::select::SelectionContext>::evaluate_root_obligation::{closure#0}
13: <rustc_trait_selection::traits::select::SelectionContext>::evaluate_root_obligation
14: rustc_traits::evaluate_obligation::evaluate_obligation
[... omitted 2 frames ...]
15: <rustc_infer::infer::InferCtxt as rustc_trait_selection::traits::query::evaluate_obligation::InferCtxtExt>::evaluate_obligation
16: <rustc_infer::infer::InferCtxt as rustc_trait_selection::traits::query::evaluate_obligation::InferCtxtExt>::evaluate_obligation_no_overflow
17: <rustc_trait_selection::traits::fulfill::FulfillProcessor>::process_trait_obligation
18: <rustc_trait_selection::traits::fulfill::FulfillProcessor as rustc_data_structures::obligation_forest::ObligationProcessor>::process_obligation
19: <rustc_data_structures::obligation_forest::ObligationForest<rustc_trait_selection::traits::fulfill::PendingPredicateObligation>>::process_obligations::<rustc_trait_selection::traits::fulfill::FulfillProcessor>
20: <rustc_trait_selection::traits::fulfill::FulfillmentContext<rustc_trait_selection::traits::FulfillmentError> as rustc_infer::traits::engine::TraitEngine<rustc_trait_selection::traits::FulfillmentError>>::select_where_possible
21: <rustc_hir_typeck::fn_ctxt::FnCtxt>::check_argument_types
22: <rustc_hir_typeck::fn_ctxt::FnCtxt>::confirm_builtin_call
23: <rustc_hir_typeck::fn_ctxt::FnCtxt>::check_expr_kind
24: <rustc_hir_typeck::fn_ctxt::FnCtxt>::check_expr_with_expectation_and_args
25: <rustc_hir_typeck::fn_ctxt::FnCtxt>::check_block_with_expected
26: <rustc_hir_typeck::fn_ctxt::FnCtxt>::check_expr_with_expectation_and_args
27: <rustc_hir_typeck::fn_ctxt::FnCtxt>::check_return_expr
28: rustc_hir_typeck::check::check_fn
29: rustc_hir_typeck::typeck
[... omitted 1 frame ...]
30: <rustc_middle::hir::map::Map>::par_body_owners::<rustc_hir_analysis::check_crate::{closure#4}>::{closure#0}
31: rustc_hir_analysis::check_crate
32: rustc_interface::passes::run_required_analyses
33: rustc_interface::passes::analysis
[... omitted 1 frame ...]
34: <rustc_interface::queries::QueryResult<&rustc_middle::ty::context::GlobalCtxt>>::enter::<core::result::Result<(), rustc_span::ErrorGuaranteed>, rustc_driver_impl::run_compiler::{closure#0}::{closure#1}::{closure#3}>
35: rustc_interface::interface::run_compiler::<core::result::Result<(), rustc_span::ErrorGuaranteed>, 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/240607_100chaos_tree_combine_typ/icefiles/rustc-ice-2024-06-11T10_43_12-38775.txt` to your bug report
query stack during panic:
#0 [tag_for_variant] computing variant tag for enum
#1 [evaluate_obligation] evaluating trait selection obligation `Error: core::mem::transmutability::BikeshedIntrinsicFrom<test::Src, core::mem::transmutability::Assume { alignment: false, lifetimes: false, safety: false, validity: false }>`
#2 [typeck] type-checking `test`
#3 [analysis] running analysis passes on this crate
end of query stack
Code
(hand-reduced)
(original)
Meta
rustc --version --verbose:Error output
Command:
rustcBacktrace
Notes
compiler/rustc_const_eval/src/interpret/discriminant.rs L288rust/compiler/rustc_const_eval/src/interpret/discriminant.rs
Lines 276 to 288 in b5b1356
EthereumorTokioremoved from enum definition in the reduced ICE triggering code (Line 10, 11), ICE: compiler/rustc_const_eval/src/interpret/discriminant.rs assertion failed 0 != 1 #125811 will be triggered.compiler/rustc_const_eval/src/interpret/discriminant.rs L245)rust/compiler/rustc_const_eval/src/interpret/discriminant.rs
Lines 243 to 247 in b5b1356
@rustbot label +F-transmutability