rust-lang / rust

Empowering everyone to build reliable and efficient software.
https://www.rust-lang.org
Other
98.01k stars 12.68k forks source link

debug ice: `alignment mismatch between ABI and layout in TyAndLayout` #112433

Closed matthiaskrgr closed 1 week ago

matthiaskrgr commented 1 year ago

Code

#![crate_type="lib"]
#![feature(transmutability)]

mod assert {
    use std::mem::BikeshedIntrinsicFrom;

    pub fn is_transmutable<Src, Dst, Context>()
    where
        Dst: BikeshedIntrinsicFrom<Src, Context>,
    {
    }
}

#[repr(C, packed(2))]
enum V0usize {
    V,
}

fn nsize() {
    fn u_should_have_correct_length() {
        type Current = V0usize;
        type Analog = V0usize;
        type Context = V0usize;

        assert::is_transmutable::<Current, Analog, Context>();
    }
}

Meta

rustc --version --verbose:

b2b34bd83192c3d16c88655158f7d8d612513e88

Error output

error[E0517]: attribute should be applied to a struct or union
  --> treereduce.out:14:11
   |
14 |   #[repr(C, packed(2))]
   |             ^^^^^^^^^
15 | / enum V0usize {
16 | |     V,
17 | | }
   | |_- not a struct or union
Backtrace

``` thread 'rustc' panicked at 'assertion failed: `(left == right)` left: `Align(2 bytes)`, right: `Align(4 bytes)`: alignment mismatch between ABI and layout in TyAndLayout { ty: V0usize, layout: Layout { size: Size(4 bytes), align: AbiAndPrefAlign { abi: Align(2 bytes), pref: Align(8 bytes), }, abi: Scalar( Initialized { value: Int( I32, false, ), valid_range: 0..=0, }, ), fields: Arbitrary { offsets: [ Size(0 bytes), ], memory_index: [ 0, ], }, largest_niche: Some( Niche { offset: Size(0 bytes), value: Int( I32, false, ), valid_range: 0..=0, }, ), variants: Multiple { tag: Initialized { value: Int( I32, false, ), valid_range: 0..=0, }, tag_encoding: Direct, tag_field: 0, variants: [ Layout { size: Size(4 bytes), align: AbiAndPrefAlign { abi: Align(2 bytes), pref: Align(2 bytes), }, abi: Aggregate { sized: true, }, fields: Arbitrary { offsets: [], memory_index: [], }, largest_niche: None, variants: Single { index: 0, }, }, ], }, }, }', compiler/rustc_ty_utils/src/layout_sanity_check.rs:82:9 stack backtrace: 0: 0x7f70adef1156 - trace at /home/matthias/vcs/github/rust_debug_assertions/library/std/src/../../backtrace/src/backtrace/libunwind.rs:93:5 1: 0x7f70adef1156 - trace_unsynchronized at /home/matthias/vcs/github/rust_debug_assertions/library/std/src/../../backtrace/src/backtrace/mod.rs:66:5 2: 0x7f70adef1156 - _print_fmt at /home/matthias/vcs/github/rust_debug_assertions/library/std/src/sys_common/backtrace.rs:65:5 3: 0x7f70adef1156 - fmt at /home/matthias/vcs/github/rust_debug_assertions/library/std/src/sys_common/backtrace.rs:44:22 4: 0x7f70adf3d9f8 - fmt at /home/matthias/vcs/github/rust_debug_assertions/library/core/src/fmt/rt.rs:138:9 5: 0x7f70adf3d9f8 - write at /home/matthias/vcs/github/rust_debug_assertions/library/core/src/fmt/mod.rs:1094:21 6: 0x7f70adeaafbf - write_fmt at /home/matthias/vcs/github/rust_debug_assertions/library/std/src/io/mod.rs:1713:15 7: 0x7f70adef0f55 - _print at /home/matthias/vcs/github/rust_debug_assertions/library/std/src/sys_common/backtrace.rs:47:5 8: 0x7f70adef0f55 - print at /home/matthias/vcs/github/rust_debug_assertions/library/std/src/sys_common/backtrace.rs:34:9 9: 0x7f70adeca06c - {closure#1} 10: 0x7f70adec9d42 - default_hook at /home/matthias/vcs/github/rust_debug_assertions/library/std/src/panicking.rs:288:9 11: 0x7f70af87954b - call<(&core::panic::panic_info::PanicInfo), (dyn core::ops::function::Fn<(&core::panic::panic_info::PanicInfo), Output=()> + core::marker::Send + core::marker::Sync), alloc::alloc::Global> at /home/matthias/vcs/github/rust_debug_assertions/library/alloc/src/boxed.rs:1999:9 12: 0x7f70af87954b - {closure#0} at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_driver_impl/src/lib.rs:1269:13 13: 0x7f70adeca855 - call<(&core::panic::panic_info::PanicInfo), (dyn core::ops::function::Fn<(&core::panic::panic_info::PanicInfo), Output=()> + core::marker::Send + core::marker::Sync), alloc::alloc::Global> at /home/matthias/vcs/github/rust_debug_assertions/library/alloc/src/boxed.rs:1999:9 14: 0x7f70adeca855 - rust_panic_with_hook at /home/matthias/vcs/github/rust_debug_assertions/library/std/src/panicking.rs:709:13 15: 0x7f70adef1467 - {closure#0} at /home/matthias/vcs/github/rust_debug_assertions/library/std/src/panicking.rs:597:13 16: 0x7f70adef1236 - __rust_end_short_backtrace at /home/matthias/vcs/github/rust_debug_assertions/library/std/src/sys_common/backtrace.rs:151:18 17: 0x7f70adeca3c2 - begin_panic_handler at /home/matthias/vcs/github/rust_debug_assertions/library/std/src/panicking.rs:593:5 18: 0x7f70ade7e133 - panic_fmt at /home/matthias/vcs/github/rust_debug_assertions/library/core/src/panicking.rs:67:14 19: 0x7f70ade7e6ab - assert_failed_inner 20: 0x7f70ae947fe9 - core[b962eb8751e8bda6]::panicking::assert_failed:: at /home/matthias/vcs/github/rust_debug_assertions/library/core/src/panicking.rs:228:5 21: 0x7f70b1efd175 - check_layout_abi 22: 0x7f70b1efd175 - sanity_check_layout at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_ty_utils/src/layout_sanity_check.rs:245:5 23: 0x7f70b1f44b75 - layout_of at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_ty_utils/src/layout.rs:64:5 24: 0x7f70b14e8870 - {closure#0} at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_query_impl/src/plumbing.rs:577:33 25: 0x7f70b14e8870 - __rust_begin_short_backtrace> at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_query_impl/src/plumbing.rs:506:18 26: 0x7f70b156c886 - {closure#2} at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_query_impl/src/plumbing.rs:574:25 27: 0x7f70b156c886 - call_once)> at /home/matthias/vcs/github/rust_debug_assertions/library/core/src/ops/function.rs:250:5 28: 0x7f70b1280732 - compute, rustc_middle::query::erase::Erased<[u8; 24]>>, false, true, false> at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_query_impl/src/lib.rs:116:9 29: 0x7f70b1280732 - {closure#0}, rustc_middle::query::erase::Erased<[u8; 24]>>, false, true, false>, rustc_query_impl::plumbing::QueryCtxt> at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_query_system/src/query/plumbing.rs:480:72 30: 0x7f70b1280732 - {closure#0}, rustc_middle::query::erase::Erased<[u8; 24]>>, false, true, false>, rustc_query_impl::plumbing::QueryCtxt>, rustc_middle::query::erase::Erased<[u8; 24]>> at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_middle/src/ty/context/tls.rs:82:9 31: 0x7f70b1280732 - try_with, rustc_middle::ty::context::tls::enter_context::{closure_env#0}, rustc_middle::query::erase::Erased<[u8; 24]>>, false, true, false>, rustc_query_impl::plumbing::QueryCtxt>, rustc_middle::query::erase::Erased<[u8; 24]>>, rustc_middle::query::erase::Erased<[u8; 24]>> at /home/matthias/vcs/github/rust_debug_assertions/library/std/src/thread/local.rs:270:16 32: 0x7f70b1280732 - with, rustc_middle::ty::context::tls::enter_context::{closure_env#0}, rustc_middle::query::erase::Erased<[u8; 24]>>, false, true, false>, rustc_query_impl::plumbing::QueryCtxt>, rustc_middle::query::erase::Erased<[u8; 24]>>, rustc_middle::query::erase::Erased<[u8; 24]>> at /home/matthias/vcs/github/rust_debug_assertions/library/std/src/thread/local.rs:246:9 33: 0x7f70b1280732 - enter_context, rustc_middle::query::erase::Erased<[u8; 24]>>, false, true, false>, rustc_query_impl::plumbing::QueryCtxt>, rustc_middle::query::erase::Erased<[u8; 24]>> at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_middle/src/ty/context/tls.rs:79:9 34: 0x7f70b1280732 - {closure#0}, rustc_query_system::query::plumbing::execute_job_non_incr::{closure_env#0}, rustc_middle::query::erase::Erased<[u8; 24]>>, false, true, false>, rustc_query_impl::plumbing::QueryCtxt>> at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_query_impl/src/plumbing.rs:149:13 35: 0x7f70b1280732 - {closure#0}, rustc_query_system::query::plumbing::execute_job_non_incr::{closure_env#0}, rustc_middle::query::erase::Erased<[u8; 24]>>, false, true, false>, rustc_query_impl::plumbing::QueryCtxt>>, rustc_middle::query::erase::Erased<[u8; 24]>> at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_middle/src/ty/context/tls.rs:133:9 36: 0x7f70b1280732 - {closure#0}, rustc_query_system::query::plumbing::execute_job_non_incr::{closure_env#0}, rustc_middle::query::erase::Erased<[u8; 24]>>, false, true, false>, rustc_query_impl::plumbing::QueryCtxt>>, rustc_middle::query::erase::Erased<[u8; 24]>>, rustc_middle::query::erase::Erased<[u8; 24]>> at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_middle/src/ty/context/tls.rs:111:36 37: 0x7f70b1280732 - with_context_opt, rustc_query_system::query::plumbing::execute_job_non_incr::{closure_env#0}, rustc_middle::query::erase::Erased<[u8; 24]>>, false, true, false>, rustc_query_impl::plumbing::QueryCtxt>>, rustc_middle::query::erase::Erased<[u8; 24]>>, rustc_middle::query::erase::Erased<[u8; 24]>>, rustc_middle::query::erase::Erased<[u8; 24]>> at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_middle/src/ty/context/tls.rs:100:18 38: 0x7f70b1280732 - with_context, rustc_query_system::query::plumbing::execute_job_non_incr::{closure_env#0}, rustc_middle::query::erase::Erased<[u8; 24]>>, false, true, false>, rustc_query_impl::plumbing::QueryCtxt>>, rustc_middle::query::erase::Erased<[u8; 24]>>, rustc_middle::query::erase::Erased<[u8; 24]>> at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_middle/src/ty/context/tls.rs:111:5 39: 0x7f70b1280732 - with_related_context, rustc_query_system::query::plumbing::execute_job_non_incr::{closure_env#0}, rustc_middle::query::erase::Erased<[u8; 24]>>, false, true, false>, rustc_query_impl::plumbing::QueryCtxt>>, rustc_middle::query::erase::Erased<[u8; 24]>> at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_middle/src/ty/context/tls.rs:124:5 40: 0x7f70b1280732 - start_query, rustc_query_system::query::plumbing::execute_job_non_incr::{closure_env#0}, rustc_middle::query::erase::Erased<[u8; 24]>>, false, true, false>, rustc_query_impl::plumbing::QueryCtxt>> at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_query_impl/src/plumbing.rs:134:9 41: 0x7f70b1280732 - execute_job_non_incr, rustc_middle::query::erase::Erased<[u8; 24]>>, false, true, false>, rustc_query_impl::plumbing::QueryCtxt> at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_query_system/src/query/plumbing.rs:480:18 42: 0x7f70b1280732 - execute_job, rustc_middle::query::erase::Erased<[u8; 24]>>, false, true, false>, rustc_query_impl::plumbing::QueryCtxt, false> at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_query_system/src/query/plumbing.rs:413:9 43: 0x7f70b1280732 - try_execute_query, rustc_middle::query::erase::Erased<[u8; 24]>>, false, true, false>, rustc_query_impl::plumbing::QueryCtxt, false> at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_query_system/src/query/plumbing.rs:358:13 44: 0x7f70b13b4cb4 - {closure#0}, rustc_middle::query::erase::Erased<[u8; 24]>>, false, true, false>, rustc_query_impl::plumbing::QueryCtxt> at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_query_system/src/query/plumbing.rs:810:32 45: 0x7f70b13b4cb4 - maybe_grow, rustc_query_system::query::plumbing::get_query_non_incr::{closure_env#0}, rustc_middle::query::erase::Erased<[u8; 24]>>, false, true, false>, rustc_query_impl::plumbing::QueryCtxt>> at /home/matthias/.cargo/registry/src/index.crates.io-6f17d22bba15001f/stacker-0.1.15/src/lib.rs:55:9 46: 0x7f70b13b4cb4 - ensure_sufficient_stack, rustc_query_system::query::plumbing::get_query_non_incr::{closure_env#0}, rustc_middle::query::erase::Erased<[u8; 24]>>, false, true, false>, rustc_query_impl::plumbing::QueryCtxt>> at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_data_structures/src/stack.rs:17:5 47: 0x7f70b13b4cb4 - get_query_non_incr, rustc_middle::query::erase::Erased<[u8; 24]>>, false, true, false>, rustc_query_impl::plumbing::QueryCtxt> at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_query_system/src/query/plumbing.rs:810:5 48: 0x7f70b13b4cb4 - __rust_end_short_backtrace at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_query_impl/src/plumbing.rs:554:26 49: 0x7f70b1e973dc - query_get_at, rustc_middle::query::erase::Erased<[u8; 24]>>> at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_middle/src/query/plumbing.rs:155:17 50: 0x7f70b1e985f7 - layout_of at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_middle/src/query/mod.rs:2179:1 51: 0x7f70b1e985f7 - layout_of at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_middle/src/query/plumbing.rs:376:35 52: 0x7f70b1e985f7 - from_ty at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_transmute/src/layout/tree.rs:230:50 53: 0x7f70b1eafde7 - from_ty at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_transmute/src/layout/tree.rs:309:42 54: 0x7f70b1e9e386 - {closure#0} at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_transmute/src/maybe_transmutable/mod.rs:74:27 55: 0x7f70b1e9e386 - map_layouts> at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_transmute/src/maybe_transmutable/mod.rs:50:26 56: 0x7f70b1e9e386 - answer at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_transmute/src/maybe_transmutable/mod.rs:69:35 57: 0x7f70b1a63a12 - is_transmutable at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_transmute/src/lib.rs:98:13 58: 0x7f70b1a63a12 - confirm_transmutability_candidate at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_trait_selection/src/traits/select/confirmation.rs:305:34 59: 0x7f70b1a63a12 - confirm_candidate at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_trait_selection/src/traits/select/confirmation.rs:58:28 60: 0x7f70b1c25d2e - {closure#0} at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_trait_selection/src/traits/select/mod.rs:1272:19 61: 0x7f70b1c25d2e - {closure#0} at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_trait_selection/src/traits/select/mod.rs:565:26 62: 0x7f70b1c25d2e - probe, rustc_trait_selection::traits::select::{impl#1}::evaluation_probe::{closure_env#0}> at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_infer/src/infer/mod.rs:825:17 63: 0x7f70b1a7758f - evaluation_probe at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_trait_selection/src/traits/select/mod.rs:563:9 64: 0x7f70b1a7758f - {closure#0} at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_trait_selection/src/traits/select/mod.rs:1270:31 65: 0x7f70b1a7758f - evaluate_candidate at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_trait_selection/src/traits/select/mod.rs:1269:50 66: 0x7f70b1a56cb7 - evaluate_stack at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_trait_selection/src/traits/select/mod.rs:1233:28 67: 0x7f70b1b709f5 - {closure#2} at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_trait_selection/src/traits/select/mod.rs:1056:30 68: 0x7f70b1b709f5 - {closure#0}> at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_trait_selection/src/traits/select/mod.rs:1403:86 69: 0x7f70b1b26fd5 - with_anon_task>, core::result::Result> at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_query_system/src/dep_graph/graph.rs:303:22 70: 0x7f70b1a754d2 - in_task> at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_trait_selection/src/traits/select/mod.rs:1403:13 71: 0x7f70b1a754d2 - {closure#0} at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_trait_selection/src/traits/select/mod.rs:1055:34 72: 0x7f70b1a754d2 - evaluate_trait_predicate_recursively at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_trait_selection/src/traits/select/mod.rs:1010:50 73: 0x7f70b1a72b42 - {closure#0} at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_trait_selection/src/traits/select/mod.rs:661:21 74: 0x7f70b1a72b42 - maybe_grow, rustc_trait_selection::traits::select::{impl#1}::evaluate_predicate_recursively::{closure#0}::{closure_env#0}> at /home/matthias/.cargo/registry/src/index.crates.io-6f17d22bba15001f/stacker-0.1.15/src/lib.rs:55:9 75: 0x7f70b1a72b42 - ensure_sufficient_stack, rustc_trait_selection::traits::select::{impl#1}::evaluate_predicate_recursively::{closure#0}::{closure_env#0}> at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_data_structures/src/stack.rs:17:5 76: 0x7f70b1a72b42 - {closure#0} at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_trait_selection/src/traits/select/mod.rs:654:9 77: 0x7f70b1a72b42 - evaluate_predicate_recursively at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_trait_selection/src/traits/select/mod.rs:644:50 78: 0x7f70b1c26a4f - {closure#0} at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_trait_selection/src/traits/select/mod.rs:545:17 79: 0x7f70b1c26a4f - {closure#0} at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_trait_selection/src/traits/select/mod.rs:565:26 80: 0x7f70b1c26a4f - probe, rustc_trait_selection::traits::select::{impl#1}::evaluation_probe::{closure_env#0}> at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_infer/src/infer/mod.rs:825:17 81: 0x7f70b1da0631 - evaluation_probe at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_trait_selection/src/traits/select/mod.rs:563:9 82: 0x7f70b1da0631 - evaluate_root_obligation at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_trait_selection/src/traits/select/mod.rs:539:14 83: 0x7f70b1da0631 - evaluate_obligation at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_traits/src/evaluate_obligation.rs:33:5 84: 0x7f70b14e651f - {closure#0} at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_query_impl/src/plumbing.rs:577:33 85: 0x7f70b14e651f - __rust_begin_short_backtrace> at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_query_impl/src/plumbing.rs:506:18 86: 0x7f70b1562d2d - {closure#2} at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_query_impl/src/plumbing.rs:574:25 87: 0x7f70b1562d2d - call_once>)> at /home/matthias/vcs/github/rust_debug_assertions/library/core/src/ops/function.rs:250:5 88: 0x7f70b12a36ca - compute>, rustc_middle::query::erase::Erased<[u8; 2]>>, false, false, false> at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_query_impl/src/lib.rs:116:9 89: 0x7f70b12a36ca - {closure#0}>, rustc_middle::query::erase::Erased<[u8; 2]>>, false, false, false>, rustc_query_impl::plumbing::QueryCtxt> at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_query_system/src/query/plumbing.rs:480:72 90: 0x7f70b12a36ca - {closure#0}>, rustc_middle::query::erase::Erased<[u8; 2]>>, false, false, false>, rustc_query_impl::plumbing::QueryCtxt>, rustc_middle::query::erase::Erased<[u8; 2]>> at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_middle/src/ty/context/tls.rs:82:9 91: 0x7f70b12a36ca - try_with, rustc_middle::ty::context::tls::enter_context::{closure_env#0}>, rustc_middle::query::erase::Erased<[u8; 2]>>, false, false, false>, rustc_query_impl::plumbing::QueryCtxt>, rustc_middle::query::erase::Erased<[u8; 2]>>, rustc_middle::query::erase::Erased<[u8; 2]>> at /home/matthias/vcs/github/rust_debug_assertions/library/std/src/thread/local.rs:270:16 92: 0x7f70b12a36ca - with, rustc_middle::ty::context::tls::enter_context::{closure_env#0}>, rustc_middle::query::erase::Erased<[u8; 2]>>, false, false, false>, rustc_query_impl::plumbing::QueryCtxt>, rustc_middle::query::erase::Erased<[u8; 2]>>, rustc_middle::query::erase::Erased<[u8; 2]>> at /home/matthias/vcs/github/rust_debug_assertions/library/std/src/thread/local.rs:246:9 93: 0x7f70b12a36ca - enter_context>, rustc_middle::query::erase::Erased<[u8; 2]>>, false, false, false>, rustc_query_impl::plumbing::QueryCtxt>, rustc_middle::query::erase::Erased<[u8; 2]>> at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_middle/src/ty/context/tls.rs:79:9 94: 0x7f70b12a36ca - {closure#0}, rustc_query_system::query::plumbing::execute_job_non_incr::{closure_env#0}>, rustc_middle::query::erase::Erased<[u8; 2]>>, false, false, false>, rustc_query_impl::plumbing::QueryCtxt>> at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_query_impl/src/plumbing.rs:149:13 95: 0x7f70b12a36ca - {closure#0}, rustc_query_system::query::plumbing::execute_job_non_incr::{closure_env#0}>, rustc_middle::query::erase::Erased<[u8; 2]>>, false, false, false>, rustc_query_impl::plumbing::QueryCtxt>>, rustc_middle::query::erase::Erased<[u8; 2]>> at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_middle/src/ty/context/tls.rs:133:9 96: 0x7f70b12a36ca - {closure#0}, rustc_query_system::query::plumbing::execute_job_non_incr::{closure_env#0}>, rustc_middle::query::erase::Erased<[u8; 2]>>, false, false, false>, rustc_query_impl::plumbing::QueryCtxt>>, rustc_middle::query::erase::Erased<[u8; 2]>>, rustc_middle::query::erase::Erased<[u8; 2]>> at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_middle/src/ty/context/tls.rs:111:36 97: 0x7f70b12a36ca - with_context_opt, rustc_query_system::query::plumbing::execute_job_non_incr::{closure_env#0}>, rustc_middle::query::erase::Erased<[u8; 2]>>, false, false, false>, rustc_query_impl::plumbing::QueryCtxt>>, rustc_middle::query::erase::Erased<[u8; 2]>>, rustc_middle::query::erase::Erased<[u8; 2]>>, rustc_middle::query::erase::Erased<[u8; 2]>> at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_middle/src/ty/context/tls.rs:100:18 98: 0x7f70b12a36ca - with_context, rustc_query_system::query::plumbing::execute_job_non_incr::{closure_env#0}>, rustc_middle::query::erase::Erased<[u8; 2]>>, false, false, false>, rustc_query_impl::plumbing::QueryCtxt>>, rustc_middle::query::erase::Erased<[u8; 2]>>, rustc_middle::query::erase::Erased<[u8; 2]>> at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_middle/src/ty/context/tls.rs:111:5 99: 0x7f70b12a36ca - with_related_context, rustc_query_system::query::plumbing::execute_job_non_incr::{closure_env#0}>, rustc_middle::query::erase::Erased<[u8; 2]>>, false, false, false>, rustc_query_impl::plumbing::QueryCtxt>>, rustc_middle::query::erase::Erased<[u8; 2]>> at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_middle/src/ty/context/tls.rs:124:5 100: 0x7f70b12a36ca - start_query, rustc_query_system::query::plumbing::execute_job_non_incr::{closure_env#0}>, rustc_middle::query::erase::Erased<[u8; 2]>>, false, false, false>, rustc_query_impl::plumbing::QueryCtxt>> at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_query_impl/src/plumbing.rs:134:9 101: 0x7f70b12a36ca - execute_job_non_incr>, rustc_middle::query::erase::Erased<[u8; 2]>>, false, false, false>, rustc_query_impl::plumbing::QueryCtxt> at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_query_system/src/query/plumbing.rs:480:18 102: 0x7f70b12a36ca - execute_job>, rustc_middle::query::erase::Erased<[u8; 2]>>, false, false, false>, rustc_query_impl::plumbing::QueryCtxt, false> at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_query_system/src/query/plumbing.rs:413:9 103: 0x7f70b12a36ca - try_execute_query>, rustc_middle::query::erase::Erased<[u8; 2]>>, false, false, false>, rustc_query_impl::plumbing::QueryCtxt, false> at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_query_system/src/query/plumbing.rs:358:13 104: 0x7f70b13bcc2b - {closure#0}>, rustc_middle::query::erase::Erased<[u8; 2]>>, false, false, false>, rustc_query_impl::plumbing::QueryCtxt> at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_query_system/src/query/plumbing.rs:810:32 105: 0x7f70b13bcc2b - maybe_grow, rustc_query_system::query::plumbing::get_query_non_incr::{closure_env#0}>, rustc_middle::query::erase::Erased<[u8; 2]>>, false, false, false>, rustc_query_impl::plumbing::QueryCtxt>> at /home/matthias/.cargo/registry/src/index.crates.io-6f17d22bba15001f/stacker-0.1.15/src/lib.rs:55:9 106: 0x7f70b13bcc2b - ensure_sufficient_stack, rustc_query_system::query::plumbing::get_query_non_incr::{closure_env#0}>, rustc_middle::query::erase::Erased<[u8; 2]>>, false, false, false>, rustc_query_impl::plumbing::QueryCtxt>> at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_data_structures/src/stack.rs:17:5 107: 0x7f70b13bcc2b - get_query_non_incr>, rustc_middle::query::erase::Erased<[u8; 2]>>, false, false, false>, rustc_query_impl::plumbing::QueryCtxt> at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_query_system/src/query/plumbing.rs:810:5 108: 0x7f70b13bcc2b - __rust_end_short_backtrace at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_query_impl/src/plumbing.rs:554:26 109: 0x7f70b1c385b3 - query_get_at>, rustc_middle::query::erase::Erased<[u8; 2]>>> at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_middle/src/query/plumbing.rs:155:17 110: 0x7f70b1c385b3 - evaluate_obligation at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_middle/src/query/mod.rs:2179:1 111: 0x7f70b1c385b3 - evaluate_obligation at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_trait_selection/src/traits/query/evaluate_obligation.rs:104:50 112: 0x7f70b1c38ddc - evaluate_obligation_no_overflow at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_trait_selection/src/traits/query/evaluate_obligation.rs:118:15 113: 0x7f70b1b77414 - predicate_must_hold_considering_regions at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_trait_selection/src/traits/query/evaluate_obligation.rs:50:9 114: 0x7f70b1b77414 - process_trait_obligation at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_trait_selection/src/traits/fulfill.rs:690:16 115: 0x7f70b1b75b6c - process_obligation at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_trait_selection/src/traits/fulfill.rs:380:21 116: 0x7f70b1bc6699 - process_obligations at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_data_structures/src/obligation_forest/mod.rs:457:23 117: 0x7f70b1b6cb05 - select at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_trait_selection/src/traits/fulfill.rs:100:13 118: 0x7f70b1b6cb05 - select_where_possible at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_trait_selection/src/traits/fulfill.rs:150:9 119: 0x7f70afe4cb5d - select_obligations_where_possible at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_hir_typeck/src/fn_ctxt/_impl.rs:597:26 120: 0x7f70afe4cb5d - check_argument_types at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_hir_typeck/src/fn_ctxt/checks.rs:343:17 121: 0x7f70afe0dff4 - confirm_builtin_call at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_hir_typeck/src/callee.rs:454:9 122: 0x7f70afe0c792 - check_call 123: 0x7f70afea6b52 - check_expr_kind at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_hir_typeck/src/expr.rs:336:45 124: 0x7f70afe27a05 - {closure#0} at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_hir_typeck/src/expr.rs:240:18 125: 0x7f70afe27a05 - maybe_grow at /home/matthias/.cargo/registry/src/index.crates.io-6f17d22bba15001f/stacker-0.1.15/src/lib.rs:55:9 126: 0x7f70afe27a05 - ensure_sufficient_stack at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_data_structures/src/stack.rs:17:5 127: 0x7f70afe27a05 - check_expr_with_expectation_and_args at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_hir_typeck/src/expr.rs:236:18 128: 0x7f70afea5353 - check_expr_with_expectation at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_hir_typeck/src/expr.rs:190:9 129: 0x7f70afe55f7e - check_stmt at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_hir_typeck/src/fn_ctxt/checks.rs:1491:17 130: 0x7f70afe56656 - {closure#0} at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_hir_typeck/src/fn_ctxt/checks.rs:1543:17 131: 0x7f70afe56656 - with_breakable_ctxt at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_hir_typeck/src/fn_ctxt/_impl.rs:1523:22 132: 0x7f70afe56656 - check_block_with_expected at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_hir_typeck/src/fn_ctxt/checks.rs:1541:26 133: 0x7f70afea6782 - check_expr_kind at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_hir_typeck/src/expr.rs:335:41 134: 0x7f70afe27a05 - {closure#0} at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_hir_typeck/src/expr.rs:240:18 135: 0x7f70afe27a05 - maybe_grow at /home/matthias/.cargo/registry/src/index.crates.io-6f17d22bba15001f/stacker-0.1.15/src/lib.rs:55:9 136: 0x7f70afe27a05 - ensure_sufficient_stack at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_data_structures/src/stack.rs:17:5 137: 0x7f70afe27a05 - check_expr_with_expectation_and_args at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_hir_typeck/src/expr.rs:236:18 138: 0x7f70afea5353 - check_expr_with_expectation at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_hir_typeck/src/expr.rs:190:9 139: 0x7f70afe297af - check_expr_with_hint at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_hir_typeck/src/expr.rs:142:9 140: 0x7f70afe297af - check_return_expr at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_hir_typeck/src/expr.rs:830:30 141: 0x7f70b004551d - check_fn at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_hir_typeck/src/check.rs:120:5 142: 0x7f70aff314a4 - {closure#0} at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_hir_typeck/src/lib.rs:215:9 143: 0x7f70aff314a4 - typeck_with_fallback at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_hir_typeck/src/lib.rs:175:36 144: 0x7f70aff314a4 - typeck at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_hir_typeck/src/lib.rs:157:5 145: 0x7f70b14e85bc - {closure#0} at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_query_impl/src/plumbing.rs:577:33 146: 0x7f70b14e85bc - __rust_begin_short_backtrace> at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_query_impl/src/plumbing.rs:506:18 147: 0x7f70b14af4dc - {closure#2} at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_query_impl/src/plumbing.rs:574:25 148: 0x7f70b14af4dc - call_once at /home/matthias/vcs/github/rust_debug_assertions/library/core/src/ops/function.rs:250:5 149: 0x7f70b13086c6 - compute>, false, false, false> at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_query_impl/src/lib.rs:116:9 150: 0x7f70b13086c6 - {closure#0}>, false, false, false>, rustc_query_impl::plumbing::QueryCtxt> at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_query_system/src/query/plumbing.rs:480:72 151: 0x7f70b13086c6 - {closure#0}>, false, false, false>, rustc_query_impl::plumbing::QueryCtxt>, rustc_middle::query::erase::Erased<[u8; 8]>> at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_middle/src/ty/context/tls.rs:82:9 152: 0x7f70b13086c6 - try_with, rustc_middle::ty::context::tls::enter_context::{closure_env#0}>, false, false, false>, rustc_query_impl::plumbing::QueryCtxt>, rustc_middle::query::erase::Erased<[u8; 8]>>, rustc_middle::query::erase::Erased<[u8; 8]>> at /home/matthias/vcs/github/rust_debug_assertions/library/std/src/thread/local.rs:270:16 153: 0x7f70b13086c6 - with, rustc_middle::ty::context::tls::enter_context::{closure_env#0}>, false, false, false>, rustc_query_impl::plumbing::QueryCtxt>, rustc_middle::query::erase::Erased<[u8; 8]>>, rustc_middle::query::erase::Erased<[u8; 8]>> at /home/matthias/vcs/github/rust_debug_assertions/library/std/src/thread/local.rs:246:9 154: 0x7f70b13086c6 - enter_context>, false, false, false>, rustc_query_impl::plumbing::QueryCtxt>, rustc_middle::query::erase::Erased<[u8; 8]>> at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_middle/src/ty/context/tls.rs:79:9 155: 0x7f70b13086c6 - {closure#0}, rustc_query_system::query::plumbing::execute_job_non_incr::{closure_env#0}>, false, false, false>, rustc_query_impl::plumbing::QueryCtxt>> at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_query_impl/src/plumbing.rs:149:13 156: 0x7f70b13086c6 - {closure#0}, rustc_query_system::query::plumbing::execute_job_non_incr::{closure_env#0}>, false, false, false>, rustc_query_impl::plumbing::QueryCtxt>>, rustc_middle::query::erase::Erased<[u8; 8]>> at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_middle/src/ty/context/tls.rs:133:9 157: 0x7f70b13086c6 - {closure#0}, rustc_query_system::query::plumbing::execute_job_non_incr::{closure_env#0}>, false, false, false>, rustc_query_impl::plumbing::QueryCtxt>>, rustc_middle::query::erase::Erased<[u8; 8]>>, rustc_middle::query::erase::Erased<[u8; 8]>> at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_middle/src/ty/context/tls.rs:111:36 158: 0x7f70b13086c6 - with_context_opt, rustc_query_system::query::plumbing::execute_job_non_incr::{closure_env#0}>, false, false, false>, rustc_query_impl::plumbing::QueryCtxt>>, rustc_middle::query::erase::Erased<[u8; 8]>>, rustc_middle::query::erase::Erased<[u8; 8]>>, rustc_middle::query::erase::Erased<[u8; 8]>> at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_middle/src/ty/context/tls.rs:100:18 159: 0x7f70b13086c6 - with_context, rustc_query_system::query::plumbing::execute_job_non_incr::{closure_env#0}>, false, false, false>, rustc_query_impl::plumbing::QueryCtxt>>, rustc_middle::query::erase::Erased<[u8; 8]>>, rustc_middle::query::erase::Erased<[u8; 8]>> at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_middle/src/ty/context/tls.rs:111:5 160: 0x7f70b13086c6 - with_related_context, rustc_query_system::query::plumbing::execute_job_non_incr::{closure_env#0}>, false, false, false>, rustc_query_impl::plumbing::QueryCtxt>>, rustc_middle::query::erase::Erased<[u8; 8]>> at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_middle/src/ty/context/tls.rs:124:5 161: 0x7f70b13086c6 - start_query, rustc_query_system::query::plumbing::execute_job_non_incr::{closure_env#0}>, false, false, false>, rustc_query_impl::plumbing::QueryCtxt>> at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_query_impl/src/plumbing.rs:134:9 162: 0x7f70b13086c6 - execute_job_non_incr>, false, false, false>, rustc_query_impl::plumbing::QueryCtxt> at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_query_system/src/query/plumbing.rs:480:18 163: 0x7f70b13086c6 - execute_job>, false, false, false>, rustc_query_impl::plumbing::QueryCtxt, false> at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_query_system/src/query/plumbing.rs:413:9 164: 0x7f70b13086c6 - try_execute_query>, false, false, false>, rustc_query_impl::plumbing::QueryCtxt, false> at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_query_system/src/query/plumbing.rs:358:13 165: 0x7f70b13ae2f6 - {closure#0}>, false, false, false>, rustc_query_impl::plumbing::QueryCtxt> at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_query_system/src/query/plumbing.rs:810:32 166: 0x7f70b13ae2f6 - maybe_grow, rustc_query_system::query::plumbing::get_query_non_incr::{closure_env#0}>, false, false, false>, rustc_query_impl::plumbing::QueryCtxt>> at /home/matthias/.cargo/registry/src/index.crates.io-6f17d22bba15001f/stacker-0.1.15/src/lib.rs:55:9 167: 0x7f70b13ae2f6 - ensure_sufficient_stack, rustc_query_system::query::plumbing::get_query_non_incr::{closure_env#0}>, false, false, false>, rustc_query_impl::plumbing::QueryCtxt>> at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_data_structures/src/stack.rs:17:5 168: 0x7f70b13ae2f6 - get_query_non_incr>, false, false, false>, rustc_query_impl::plumbing::QueryCtxt> at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_query_system/src/query/plumbing.rs:810:5 169: 0x7f70b13ae2f6 - __rust_end_short_backtrace at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_query_impl/src/plumbing.rs:554:26 170: 0x7f70aff16e70 - query_get_at>> at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_middle/src/query/plumbing.rs:155:17 171: 0x7f70aff30a72 - typeck at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_middle/src/query/mod.rs:2179:1 172: 0x7f70aff30a72 - typeck at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_middle/src/query/plumbing.rs:376:35 173: 0x7f70aff30a72 - used_trait_imports at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_hir_typeck/src/lib.rs:152:11 174: 0x7f70b14e63bc - {closure#0} at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_query_impl/src/plumbing.rs:577:33 175: 0x7f70b14e63bc - __rust_begin_short_backtrace> at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_query_impl/src/plumbing.rs:506:18 176: 0x7f70b14aa9cc - {closure#2} at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_query_impl/src/plumbing.rs:574:25 177: 0x7f70b14aa9cc - call_once at /home/matthias/vcs/github/rust_debug_assertions/library/core/src/ops/function.rs:250:5 178: 0x7f70b13086c6 - compute>, false, false, false> at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_query_impl/src/lib.rs:116:9 179: 0x7f70b13086c6 - {closure#0}>, false, false, false>, rustc_query_impl::plumbing::QueryCtxt> at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_query_system/src/query/plumbing.rs:480:72 180: 0x7f70b13086c6 - {closure#0}>, false, false, false>, rustc_query_impl::plumbing::QueryCtxt>, rustc_middle::query::erase::Erased<[u8; 8]>> at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_middle/src/ty/context/tls.rs:82:9 181: 0x7f70b13086c6 - try_with, rustc_middle::ty::context::tls::enter_context::{closure_env#0}>, false, false, false>, rustc_query_impl::plumbing::QueryCtxt>, rustc_middle::query::erase::Erased<[u8; 8]>>, rustc_middle::query::erase::Erased<[u8; 8]>> at /home/matthias/vcs/github/rust_debug_assertions/library/std/src/thread/local.rs:270:16 182: 0x7f70b13086c6 - with, rustc_middle::ty::context::tls::enter_context::{closure_env#0}>, false, false, false>, rustc_query_impl::plumbing::QueryCtxt>, rustc_middle::query::erase::Erased<[u8; 8]>>, rustc_middle::query::erase::Erased<[u8; 8]>> at /home/matthias/vcs/github/rust_debug_assertions/library/std/src/thread/local.rs:246:9 183: 0x7f70b13086c6 - enter_context>, false, false, false>, rustc_query_impl::plumbing::QueryCtxt>, rustc_middle::query::erase::Erased<[u8; 8]>> at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_middle/src/ty/context/tls.rs:79:9 184: 0x7f70b13086c6 - {closure#0}, rustc_query_system::query::plumbing::execute_job_non_incr::{closure_env#0}>, false, false, false>, rustc_query_impl::plumbing::QueryCtxt>> at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_query_impl/src/plumbing.rs:149:13 185: 0x7f70b13086c6 - {closure#0}, rustc_query_system::query::plumbing::execute_job_non_incr::{closure_env#0}>, false, false, false>, rustc_query_impl::plumbing::QueryCtxt>>, rustc_middle::query::erase::Erased<[u8; 8]>> at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_middle/src/ty/context/tls.rs:133:9 186: 0x7f70b13086c6 - {closure#0}, rustc_query_system::query::plumbing::execute_job_non_incr::{closure_env#0}>, false, false, false>, rustc_query_impl::plumbing::QueryCtxt>>, rustc_middle::query::erase::Erased<[u8; 8]>>, rustc_middle::query::erase::Erased<[u8; 8]>> at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_middle/src/ty/context/tls.rs:111:36 187: 0x7f70b13086c6 - with_context_opt, rustc_query_system::query::plumbing::execute_job_non_incr::{closure_env#0}>, false, false, false>, rustc_query_impl::plumbing::QueryCtxt>>, rustc_middle::query::erase::Erased<[u8; 8]>>, rustc_middle::query::erase::Erased<[u8; 8]>>, rustc_middle::query::erase::Erased<[u8; 8]>> at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_middle/src/ty/context/tls.rs:100:18 188: 0x7f70b13086c6 - with_context, rustc_query_system::query::plumbing::execute_job_non_incr::{closure_env#0}>, false, false, false>, rustc_query_impl::plumbing::QueryCtxt>>, rustc_middle::query::erase::Erased<[u8; 8]>>, rustc_middle::query::erase::Erased<[u8; 8]>> at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_middle/src/ty/context/tls.rs:111:5 189: 0x7f70b13086c6 - with_related_context, rustc_query_system::query::plumbing::execute_job_non_incr::{closure_env#0}>, false, false, false>, rustc_query_impl::plumbing::QueryCtxt>>, rustc_middle::query::erase::Erased<[u8; 8]>> at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_middle/src/ty/context/tls.rs:124:5 190: 0x7f70b13086c6 - start_query, rustc_query_system::query::plumbing::execute_job_non_incr::{closure_env#0}>, false, false, false>, rustc_query_impl::plumbing::QueryCtxt>> at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_query_impl/src/plumbing.rs:134:9 191: 0x7f70b13086c6 - execute_job_non_incr>, false, false, false>, rustc_query_impl::plumbing::QueryCtxt> at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_query_system/src/query/plumbing.rs:480:18 192: 0x7f70b13086c6 - execute_job>, false, false, false>, rustc_query_impl::plumbing::QueryCtxt, false> at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_query_system/src/query/plumbing.rs:413:9 193: 0x7f70b13086c6 - try_execute_query>, false, false, false>, rustc_query_impl::plumbing::QueryCtxt, false> at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_query_system/src/query/plumbing.rs:358:13 194: 0x7f70b13ae656 - {closure#0}>, false, false, false>, rustc_query_impl::plumbing::QueryCtxt> at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_query_system/src/query/plumbing.rs:810:32 195: 0x7f70b13ae656 - maybe_grow, rustc_query_system::query::plumbing::get_query_non_incr::{closure_env#0}>, false, false, false>, rustc_query_impl::plumbing::QueryCtxt>> at /home/matthias/.cargo/registry/src/index.crates.io-6f17d22bba15001f/stacker-0.1.15/src/lib.rs:55:9 196: 0x7f70b13ae656 - ensure_sufficient_stack, rustc_query_system::query::plumbing::get_query_non_incr::{closure_env#0}>, false, false, false>, rustc_query_impl::plumbing::QueryCtxt>> at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_data_structures/src/stack.rs:17:5 197: 0x7f70b13ae656 - get_query_non_incr>, false, false, false>, rustc_query_impl::plumbing::QueryCtxt> at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_query_system/src/query/plumbing.rs:810:5 198: 0x7f70b13ae656 - __rust_end_short_backtrace at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_query_impl/src/plumbing.rs:554:26 199: 0x7f70afbb5bce - query_get_at>> at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_middle/src/query/plumbing.rs:155:17 200: 0x7f70afbb5bce - used_trait_imports at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_middle/src/query/mod.rs:2179:1 201: 0x7f70afbb5bce - used_trait_imports at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_middle/src/query/plumbing.rs:376:35 202: 0x7f70afbb5bce - check_crate at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_hir_analysis/src/check_unused.rs:11:27 203: 0x7f70afcb36d3 - check_crate at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_hir_analysis/src/lib.rs:499:5 204: 0x7f70b037008c - analysis at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_interface/src/passes.rs:768:5 205: 0x7f70b14e860a - {closure#0} at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_query_impl/src/plumbing.rs:577:33 206: 0x7f70b14e860a - __rust_begin_short_backtrace> at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_query_impl/src/plumbing.rs:506:18 207: 0x7f70b156b928 - {closure#2} at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_query_impl/src/plumbing.rs:574:25 208: 0x7f70b156b928 - call_once at /home/matthias/vcs/github/rust_debug_assertions/library/core/src/ops/function.rs:250:5 209: 0x7f70b1279ef9 - compute>, false, false, false> at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_query_impl/src/lib.rs:116:9 210: 0x7f70b1279ef9 - {closure#0}>, false, false, false>, rustc_query_impl::plumbing::QueryCtxt> at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_query_system/src/query/plumbing.rs:480:72 211: 0x7f70b1279ef9 - {closure#0}>, false, false, false>, rustc_query_impl::plumbing::QueryCtxt>, rustc_middle::query::erase::Erased<[u8; 1]>> at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_middle/src/ty/context/tls.rs:82:9 212: 0x7f70b1279ef9 - try_with, rustc_middle::ty::context::tls::enter_context::{closure_env#0}>, false, false, false>, rustc_query_impl::plumbing::QueryCtxt>, rustc_middle::query::erase::Erased<[u8; 1]>>, rustc_middle::query::erase::Erased<[u8; 1]>> at /home/matthias/vcs/github/rust_debug_assertions/library/std/src/thread/local.rs:270:16 213: 0x7f70b1279ef9 - with, rustc_middle::ty::context::tls::enter_context::{closure_env#0}>, false, false, false>, rustc_query_impl::plumbing::QueryCtxt>, rustc_middle::query::erase::Erased<[u8; 1]>>, rustc_middle::query::erase::Erased<[u8; 1]>> at /home/matthias/vcs/github/rust_debug_assertions/library/std/src/thread/local.rs:246:9 214: 0x7f70b1279ef9 - enter_context>, false, false, false>, rustc_query_impl::plumbing::QueryCtxt>, rustc_middle::query::erase::Erased<[u8; 1]>> at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_middle/src/ty/context/tls.rs:79:9 215: 0x7f70b1279ef9 - {closure#0}, rustc_query_system::query::plumbing::execute_job_non_incr::{closure_env#0}>, false, false, false>, rustc_query_impl::plumbing::QueryCtxt>> at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_query_impl/src/plumbing.rs:149:13 216: 0x7f70b1279ef9 - {closure#0}, rustc_query_system::query::plumbing::execute_job_non_incr::{closure_env#0}>, false, false, false>, rustc_query_impl::plumbing::QueryCtxt>>, rustc_middle::query::erase::Erased<[u8; 1]>> at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_middle/src/ty/context/tls.rs:133:9 217: 0x7f70b1279ef9 - {closure#0}, rustc_query_system::query::plumbing::execute_job_non_incr::{closure_env#0}>, false, false, false>, rustc_query_impl::plumbing::QueryCtxt>>, rustc_middle::query::erase::Erased<[u8; 1]>>, rustc_middle::query::erase::Erased<[u8; 1]>> at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_middle/src/ty/context/tls.rs:111:36 218: 0x7f70b1279ef9 - with_context_opt, rustc_query_system::query::plumbing::execute_job_non_incr::{closure_env#0}>, false, false, false>, rustc_query_impl::plumbing::QueryCtxt>>, rustc_middle::query::erase::Erased<[u8; 1]>>, rustc_middle::query::erase::Erased<[u8; 1]>>, rustc_middle::query::erase::Erased<[u8; 1]>> at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_middle/src/ty/context/tls.rs:100:18 219: 0x7f70b1279ef9 - with_context, rustc_query_system::query::plumbing::execute_job_non_incr::{closure_env#0}>, false, false, false>, rustc_query_impl::plumbing::QueryCtxt>>, rustc_middle::query::erase::Erased<[u8; 1]>>, rustc_middle::query::erase::Erased<[u8; 1]>> at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_middle/src/ty/context/tls.rs:111:5 220: 0x7f70b1279ef9 - with_related_context, rustc_query_system::query::plumbing::execute_job_non_incr::{closure_env#0}>, false, false, false>, rustc_query_impl::plumbing::QueryCtxt>>, rustc_middle::query::erase::Erased<[u8; 1]>> at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_middle/src/ty/context/tls.rs:124:5 221: 0x7f70b1279ef9 - start_query, rustc_query_system::query::plumbing::execute_job_non_incr::{closure_env#0}>, false, false, false>, rustc_query_impl::plumbing::QueryCtxt>> at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_query_impl/src/plumbing.rs:134:9 222: 0x7f70b1279ef9 - execute_job_non_incr>, false, false, false>, rustc_query_impl::plumbing::QueryCtxt> at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_query_system/src/query/plumbing.rs:480:18 223: 0x7f70b1279ef9 - execute_job>, false, false, false>, rustc_query_impl::plumbing::QueryCtxt, false> at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_query_system/src/query/plumbing.rs:413:9 224: 0x7f70b1279ef9 - try_execute_query>, false, false, false>, rustc_query_impl::plumbing::QueryCtxt, false> at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_query_system/src/query/plumbing.rs:358:13 225: 0x7f70b14342c2 - {closure#0}>, false, false, false>, rustc_query_impl::plumbing::QueryCtxt> at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_query_system/src/query/plumbing.rs:810:32 226: 0x7f70b14342c2 - maybe_grow, rustc_query_system::query::plumbing::get_query_non_incr::{closure_env#0}>, false, false, false>, rustc_query_impl::plumbing::QueryCtxt>> at /home/matthias/.cargo/registry/src/index.crates.io-6f17d22bba15001f/stacker-0.1.15/src/lib.rs:55:9 227: 0x7f70b14342c2 - ensure_sufficient_stack, rustc_query_system::query::plumbing::get_query_non_incr::{closure_env#0}>, false, false, false>, rustc_query_impl::plumbing::QueryCtxt>> at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_data_structures/src/stack.rs:17:5 228: 0x7f70b14342c2 - get_query_non_incr>, false, false, false>, rustc_query_impl::plumbing::QueryCtxt> at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_query_system/src/query/plumbing.rs:810:5 229: 0x7f70b14342c2 - __rust_end_short_backtrace at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_query_impl/src/plumbing.rs:554:26 230: 0x7f70af89a1a0 - query_get_at>> at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_middle/src/query/plumbing.rs:155:17 231: 0x7f70af89a1a0 - analysis at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_middle/src/query/mod.rs:2179:1 232: 0x7f70af89a1a0 - analysis at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_middle/src/query/plumbing.rs:376:35 233: 0x7f70af89a1a0 - {closure#4} at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_driver_impl/src/lib.rs:412:52 234: 0x7f70af89a1a0 - {closure#0}> at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_middle/src/ty/context.rs:571:37 235: 0x7f70af89a1a0 - {closure#0}>, core::result::Result<(), rustc_span::ErrorGuaranteed>> at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_middle/src/ty/context/tls.rs:82:9 236: 0x7f70af89a1a0 - try_with, rustc_middle::ty::context::tls::enter_context::{closure_env#0}>, core::result::Result<(), rustc_span::ErrorGuaranteed>>, core::result::Result<(), rustc_span::ErrorGuaranteed>> at /home/matthias/vcs/github/rust_debug_assertions/library/std/src/thread/local.rs:270:16 237: 0x7f70af89a1a0 - with, rustc_middle::ty::context::tls::enter_context::{closure_env#0}>, core::result::Result<(), rustc_span::ErrorGuaranteed>>, core::result::Result<(), rustc_span::ErrorGuaranteed>> at /home/matthias/vcs/github/rust_debug_assertions/library/std/src/thread/local.rs:246:9 238: 0x7f70af89a1a0 - enter_context>, core::result::Result<(), rustc_span::ErrorGuaranteed>> at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_middle/src/ty/context/tls.rs:79:9 239: 0x7f70af89a1a0 - enter> at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_middle/src/ty/context.rs:571:9 240: 0x7f70af8e58aa - {closure#2} at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_driver_impl/src/lib.rs:412:13 241: 0x7f70af8e58aa - enter, rustc_span::ErrorGuaranteed>> at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_interface/src/queries.rs:389:19 242: 0x7f70af8984b3 - {closure#1} at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_driver_impl/src/lib.rs:353:22 243: 0x7f70af8984b3 - {closure#0}, rustc_driver_impl::run_compiler::{closure_env#1}> at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_interface/src/interface.rs:332:21 244: 0x7f70af8984b3 - set_source_map, rustc_interface::interface::run_compiler::{closure#0}::{closure_env#0}, rustc_driver_impl::run_compiler::{closure_env#1}>> at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_span/src/lib.rs:1034:5 245: 0x7f70af886024 - {closure#0}, rustc_driver_impl::run_compiler::{closure_env#1}> at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_interface/src/interface.rs:326:13 246: 0x7f70af886024 - set, rustc_driver_impl::run_compiler::{closure_env#1}>, core::result::Result<(), rustc_span::ErrorGuaranteed>> at /home/matthias/.cargo/registry/src/index.crates.io-6f17d22bba15001f/scoped-tls-1.0.0/src/lib.rs:137:9 247: 0x7f70af8a031c - create_session_globals_then, rustc_interface::interface::run_compiler::{closure_env#0}, rustc_driver_impl::run_compiler::{closure_env#1}>> at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_span/src/lib.rs:120:5 248: 0x7f70af8a031c - {closure#0}, rustc_driver_impl::run_compiler::{closure_env#1}>, core::result::Result<(), rustc_span::ErrorGuaranteed>> at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_interface/src/util.rs:155:38 249: 0x7f70af8a031c - __rust_begin_short_backtrace, rustc_driver_impl::run_compiler::{closure_env#1}>, core::result::Result<(), rustc_span::ErrorGuaranteed>>, core::result::Result<(), rustc_span::ErrorGuaranteed>> at /home/matthias/vcs/github/rust_debug_assertions/library/std/src/sys_common/backtrace.rs:135:18 250: 0x7f70af88cd55 - {closure#0}, rustc_driver_impl::run_compiler::{closure_env#1}>, core::result::Result<(), rustc_span::ErrorGuaranteed>>, core::result::Result<(), rustc_span::ErrorGuaranteed>> at /home/matthias/vcs/github/rust_debug_assertions/library/std/src/thread/mod.rs:529:17 251: 0x7f70af88cd55 - call_once, std::thread::{impl#0}::spawn_unchecked_::{closure#1}::{closure_env#0}, rustc_driver_impl::run_compiler::{closure_env#1}>, core::result::Result<(), rustc_span::ErrorGuaranteed>>, core::result::Result<(), rustc_span::ErrorGuaranteed>>> at /home/matthias/vcs/github/rust_debug_assertions/library/core/src/panic/unwind_safe.rs:271:9 252: 0x7f70af88cd55 - do_call, rustc_driver_impl::run_compiler::{closure_env#1}>, core::result::Result<(), rustc_span::ErrorGuaranteed>>, core::result::Result<(), rustc_span::ErrorGuaranteed>>>, core::result::Result<(), rustc_span::ErrorGuaranteed>> at /home/matthias/vcs/github/rust_debug_assertions/library/std/src/panicking.rs:500:40 253: 0x7f70af88cd55 - try, core::panic::unwind_safe::AssertUnwindSafe, rustc_driver_impl::run_compiler::{closure_env#1}>, core::result::Result<(), rustc_span::ErrorGuaranteed>>, core::result::Result<(), rustc_span::ErrorGuaranteed>>>> at /home/matthias/vcs/github/rust_debug_assertions/library/std/src/panicking.rs:464:19 254: 0x7f70af88cd55 - catch_unwind, rustc_driver_impl::run_compiler::{closure_env#1}>, core::result::Result<(), rustc_span::ErrorGuaranteed>>, core::result::Result<(), rustc_span::ErrorGuaranteed>>>, core::result::Result<(), rustc_span::ErrorGuaranteed>> at /home/matthias/vcs/github/rust_debug_assertions/library/std/src/panic.rs:142:14 255: 0x7f70af88cd55 - {closure#1}, rustc_driver_impl::run_compiler::{closure_env#1}>, core::result::Result<(), rustc_span::ErrorGuaranteed>>, core::result::Result<(), rustc_span::ErrorGuaranteed>> at /home/matthias/vcs/github/rust_debug_assertions/library/std/src/thread/mod.rs:528:30 256: 0x7f70af88cd55 - call_once, rustc_driver_impl::run_compiler::{closure_env#1}>, core::result::Result<(), rustc_span::ErrorGuaranteed>>, core::result::Result<(), rustc_span::ErrorGuaranteed>>, ()> at /home/matthias/vcs/github/rust_debug_assertions/library/core/src/ops/function.rs:250:5 257: 0x7f70ade9ceda - call_once<(), dyn core::ops::function::FnOnce<(), Output=()>, alloc::alloc::Global> at /home/matthias/vcs/github/rust_debug_assertions/library/alloc/src/boxed.rs:1985:9 258: 0x7f70ade9ceda - call_once<(), alloc::boxed::Box, alloc::alloc::Global>, alloc::alloc::Global> at /home/matthias/vcs/github/rust_debug_assertions/library/alloc/src/boxed.rs:1985:9 259: 0x7f70adea6d25 - thread_start at /home/matthias/vcs/github/rust_debug_assertions/library/std/src/sys/unix/thread.rs:108:17 260: 0x7f70adca344b - 261: 0x7f70add26e40 - 262: 0x0 - 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.72.0-dev running on x86_64-unknown-linux-gnu query stack during panic: #0 [layout_of] computing layout of `V0usize` #1 [evaluate_obligation] evaluating trait selection obligation `V0usize: core::mem::transmutability::BikeshedIntrinsicFrom` #2 [typeck] type-checking `nsize::u_should_have_correct_length` #3 [used_trait_imports] finding used_trait_imports `nsize::u_should_have_correct_length` #4 [analysis] running analysis passes on this crate end of query stack error: aborting due to previous error ```

compiler-errors commented 1 year ago

cc @bryangarza

bryangarza commented 1 year ago

I think the issue is that you can't have both repr(C) and repr(packed)?

Same error happens with just:

#[repr(C, packed)]
enum V0usize {
    V,
}

https://godbolt.org/z/G3sovn6nh

compiler-errors commented 1 year ago

Packed is a modifier on repr(Rust) and repr(C), so it's intended that you use both: https://doc.rust-lang.org/nomicon/other-reprs.html#reprpacked

compiler-errors commented 1 year ago

Regardless, the code should not be ICEing no matter what invalid input is given by the user 😜

bryangarza commented 1 year ago

Oh I see now, yeah the ICE mentions maybe_transmutable. I can take a closer look

@rustbot claim

matthiaskrgr commented 1 year ago

Regardless, the code should not be ICEing no matter what invalid input is given by the user :stuck_out_tongue_winking_eye:

I need to print this and frame this above my desk :p

compiler-errors commented 1 year ago

@matthiaskrgr: of course, you should know the caveats to that, lol

bryangarza commented 1 year ago

@matthiaskrgr the ICE is gone in latest nightly, but I added a test anyways https://github.com/rust-lang/rust/pull/113868

compiler-errors commented 1 year ago

@bryangarza: Did you check this on a compiler with debug assertions enabled? If so, I'd also be curious to know when this was fixed and why, but I guess that also is difficult given that debug assertions are not enabled on nightly compiler releases.

matthiaskrgr commented 1 year ago

This still crashes with debug assertions enabled (built 1.5 days ago @ d3515155216e98c23440ea92c3f49c6a0d7101fc )

bryangarza commented 1 year ago

Ah, yeah I can replicate it with debug assertions. Will work on a fix.

bryangarza commented 1 year ago

Okay, so here's what I know so far.

This is the test:

// check-fail
#![crate_type="lib"]
#![feature(transmutability)]

mod assert {
    use std::mem::BikeshedIntrinsicFrom;

    pub fn is_transmutable<Src, Dst, Context>()
    where
        Dst: BikeshedIntrinsicFrom<Src, Context>,
    {
    }
}

#[repr(C, packed(2))] //~ ERROR attribute should be applied to a struct or union
enum V0usize {
    V,
}

fn nsize() {
    fn u_should_have_correct_length() {
        type Current = V0usize;
        type Analog = V0usize;
        type Context = V0usize;

        assert::is_transmutable::<Current, Analog, Context>();
    }
}

Because of this line in the test:

assert::is_transmutable::<Current, Analog, Context>();

We are checking the layout here: https://github.com/rust-lang/rust/blob/9339f446a5302cd5041d3f3b5e59761f36699167/compiler/rustc_transmute/src/layout/tree.rs#L309

Which, goes through this check:

https://github.com/rust-lang/rust/blob/9339f446a5302cd5041d3f3b5e59761f36699167/compiler/rustc_ty_utils/src/layout_sanity_check.rs#L23-L26

And then ICEs here: https://github.com/rust-lang/rust/blob/9339f446a5302cd5041d3f3b5e59761f36699167/compiler/rustc_ty_utils/src/layout_sanity_check.rs#L82-L86


I'm thinking that Safe Transmute should quit early because of the error on the enum (saying that packed cannot be used on enums, only on structs or unions). But this line is not catching it:

https://github.com/rust-lang/rust/blob/9339f446a5302cd5041d3f3b5e59761f36699167/compiler/rustc_transmute/src/layout/tree.rs#L264-L266

So this is where I'm at -- I don't know if there is a way for Safe Transmute to know that it shouldn't continue because the enum itself has an error?

If anyone has any pointers please let me know. Going to move on to some other work and if possible, come back to it later.

jswrenn commented 1 week ago

This no longer causes an ICE: https://play.rust-lang.org/?version=nightly&mode=debug&edition=2021&gist=362a62e968bd6bf770a3027671e201a3