rust-lang / rust

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

ICE in `macro_metavar_expr_concat` #131393

Closed crumblingstatue closed 1 hour ago

crumblingstatue commented 1 day ago

Code

#![feature(macro_metavar_expr_concat)]

// paste version included for reference, can be commented out or removed
macro_rules! r_paste {
    ($t:ident $($en:ident)?) => {
        paste::paste! {
            read::<[<$t $($en)?>]>()
        }
    }
}

// Probably not valid usage, but obviously it shouldn't cause an ICE
macro_rules! r_concat {
    ($t:ident $($en:ident)?) => {
        read::<${concat($t, $en)}>()
    }
}

struct u16le;

fn read<T>() {

}

fn main() {
    r_paste!(u8);
    r_paste!(u16 le);
    r_concat!(u8);
    r_concat!(u16 le);
}

Meta

rustc --version --verbose:

rustc 1.83.0-nightly (3ae715c8c 2024-10-07)
binary: rustc
commit-hash: 3ae715c8c63f9aeac47cbf7d8d9dadb3fa32c638
commit-date: 2024-10-07
host: x86_64-unknown-linux-gnu
release: 1.83.0-nightly
LLVM version: 19.1.1

Error output

thread 'rustc' panicked at compiler/rustc_expand/src/mbe/transcribe.rs:698:63:
called `Option::unwrap()` on a `None` value
Backtrace

``` 0: 0x7bec75b3594a - ::fmt::hd8f0d1407b3b8899 1: 0x7bec76203466 - core::fmt::write::hf411bc19ef187626 2: 0x7bec77420591 - std::io::Write::write_fmt::h9fe7746e7ac11b2b 3: 0x7bec75b357a2 - std::sys::backtrace::BacktraceLock::print::h241a50c788e7dbe0 4: 0x7bec75b37c76 - std::panicking::default_hook::{{closure}}::hb89df2c6bb06eab3 5: 0x7bec75b37ac0 - std::panicking::default_hook::hd88da784341d8173 6: 0x7bec74beab9f - std[b225c22db7505898]::panicking::update_hook::>::{closure#0} 7: 0x7bec75b38388 - std::panicking::rust_panic_with_hook::h16aa6d6c31ae1afe 8: 0x7bec75b38126 - std::panicking::begin_panic_handler::{{closure}}::hf40b15a26e74665c 9: 0x7bec75b35df9 - std::sys::backtrace::__rust_end_short_backtrace::ha63b5874988ffb19 10: 0x7bec75b37e1c - rust_begin_unwind 11: 0x7bec73595c70 - core::panicking::panic_fmt::hab572b17d227b63d 12: 0x7bec7346ee9c - core::panicking::panic::h9cbbea0c3e271237 13: 0x7bec73b6efb9 - core::option::unwrap_failed::hb19494f6a6c93824 14: 0x7bec72730af6 - ::fully_expand_fragment 15: 0x7bec7739eacd - ::expand_crate 16: 0x7bec76708b51 - rustc_interface[e791496ce9706df7]::passes::resolver_for_lowering_raw 17: 0x7bec767080f5 - rustc_query_impl[cec98a3f89bceaba]::plumbing::__rust_begin_short_backtrace::> 18: 0x7bec767080e3 - >::call_once 19: 0x7bec7713a38d - rustc_query_system[42f51c145ab84848]::query::plumbing::try_execute_query::>, false, false, false>, rustc_query_impl[cec98a3f89bceaba]::plumbing::QueryCtxt, true> 20: 0x7bec77139e0a - rustc_query_impl[cec98a3f89bceaba]::query_impl::resolver_for_lowering_raw::get_query_incr::__rust_end_short_backtrace 21: 0x7bec76f55b92 - rustc_interface[e791496ce9706df7]::interface::run_compiler::, rustc_driver_impl[9c4640f0daa151b4]::run_compiler::{closure#0}>::{closure#1} 22: 0x7bec7700ce90 - std[b225c22db7505898]::sys::backtrace::__rust_begin_short_backtrace::, rustc_driver_impl[9c4640f0daa151b4]::run_compiler::{closure#0}>::{closure#1}, core[f4521e9068f32b0a]::result::Result<(), rustc_span[13130a1ca6fd67da]::ErrorGuaranteed>>::{closure#0}, core[f4521e9068f32b0a]::result::Result<(), rustc_span[13130a1ca6fd67da]::ErrorGuaranteed>>::{closure#0}::{closure#0}, core[f4521e9068f32b0a]::result::Result<(), rustc_span[13130a1ca6fd67da]::ErrorGuaranteed>> 23: 0x7bec7700d557 - <::spawn_unchecked_, rustc_driver_impl[9c4640f0daa151b4]::run_compiler::{closure#0}>::{closure#1}, core[f4521e9068f32b0a]::result::Result<(), rustc_span[13130a1ca6fd67da]::ErrorGuaranteed>>::{closure#0}, core[f4521e9068f32b0a]::result::Result<(), rustc_span[13130a1ca6fd67da]::ErrorGuaranteed>>::{closure#0}::{closure#0}, core[f4521e9068f32b0a]::result::Result<(), rustc_span[13130a1ca6fd67da]::ErrorGuaranteed>>::{closure#1} as core[f4521e9068f32b0a]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0} 24: 0x7bec7700e441 - std::sys::pal::unix::thread::Thread::new::thread_start::h38e396ea274cc7c9 ```

Tracking issue for macro_metavar_expr_concat: #124225

matthiaskrgr commented 1 day ago

probably duplicate of https://github.com/rust-lang/rust/issues/128346