Skip to content

ICE when using the new ${concat()} meta #143819

Closed as duplicate of#140479
Closed as duplicate of#140479
@linkmauve

Description

@linkmauve

Code

macro_rules! foo {
    ($($($arg_type:ident),*),*) => {
        $(
            $(
                ${concat(le_, $arg_type)}
            )*
        )*
    };
}

foo!(u32);

Meta

rustc --version --verbose:

rustc 1.90.0-nightly (2a023bf80 2025-07-10)
binary: rustc
commit-hash: 2a023bf80a6fbd6a06d5460a34eb247b986286ed
commit-date: 2025-07-10
host: x86_64-unknown-linux-gnu
release: 1.90.0-nightly
LLVM version: 20.1.7

Error output

thread 'rustc' panicked at compiler/rustc_expand/src/mbe/transcribe.rs:559:46:
not implemented
stack backtrace:
   0:     0x7f243279d815 - std::backtrace::Backtrace::create::h402d5dee4ff3ff4a
   1:     0x7f243279d765 - std::backtrace::Backtrace::force_capture::hc053cd276d2dd0cf
   2:     0x7f243185618e - std[3d755e9610f7e251]::panicking::update_hook::<alloc[7f4c2d72f38b8d7e]::boxed::Box<rustc_driver_impl[63982ee25ad4258]::install_ice_hook::{closure#1}>>::{closure#0}
   3:     0x7f24327b77fe - std::panicking::rust_panic_with_hook::h95fdb0db127e3393
   4:     0x7f24327b74c6 - std::panicking::begin_panic_handler::{{closure}}::h60a8d1dd28fdf2f9
   5:     0x7f24327b3b79 - std::sys::backtrace::__rust_end_short_backtrace::h257feb614e80fbd3
   6:     0x7f24327b71dd - __rustc[c00c44d2e7a9f37a]::rust_begin_unwind
   7:     0x7f242eee32c0 - core::panicking::panic_fmt::h34a2576cfcb88dba
   8:     0x7f242f3a1acc - core::panicking::panic::hccd196a068931ae7
   9:     0x7f243466823a - <rustc_expand[e56076fee33d55f5]::expand::MacroExpander>::fully_expand_fragment
  10:     0x7f243461c3f9 - <rustc_expand[e56076fee33d55f5]::expand::MacroExpander>::expand_crate
  11:     0x7f2433acd02c - rustc_interface[ca8d5c69dfd7f14d]::passes::configure_and_expand
  12:     0x7f24341d3963 - rustc_interface[ca8d5c69dfd7f14d]::passes::resolver_for_lowering_raw
  13:     0x7f24341d36cd - rustc_query_impl[73f7b85c6196fc58]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[73f7b85c6196fc58]::query_impl::resolver_for_lowering_raw::dynamic_query::{closure#2}::{closure#0}, rustc_middle[bfb8074addc0df29]::query::erase::Erased<[u8; 16usize]>>
  14:     0x7f24341d36a7 - <rustc_query_impl[73f7b85c6196fc58]::query_impl::resolver_for_lowering_raw::dynamic_query::{closure#2} as core[557129ac99d5593e]::ops::function::FnOnce<(rustc_middle[bfb8074addc0df29]::ty::context::TyCtxt, ())>>::call_once
  15:     0x7f2434421f29 - rustc_query_system[9ad56969e99527f5]::query::plumbing::try_execute_query::<rustc_query_impl[73f7b85c6196fc58]::DynamicConfig<rustc_query_system[9ad56969e99527f5]::query::caches::SingleCache<rustc_middle[bfb8074addc0df29]::query::erase::Erased<[u8; 16usize]>>, false, false, false>, rustc_query_impl[73f7b85c6196fc58]::plumbing::QueryCtxt, true>
  16:     0x7f2434421941 - rustc_query_impl[73f7b85c6196fc58]::query_impl::resolver_for_lowering_raw::get_query_incr::__rust_end_short_backtrace
  17:     0x7f24343191c0 - rustc_interface[ca8d5c69dfd7f14d]::passes::create_and_enter_global_ctxt::<core[557129ac99d5593e]::option::Option<rustc_interface[ca8d5c69dfd7f14d]::queries::Linker>, rustc_driver_impl[63982ee25ad4258]::run_compiler::{closure#0}::{closure#2}>::{closure#2}::{closure#0}
  18:     0x7f2434228f17 - rustc_interface[ca8d5c69dfd7f14d]::interface::run_compiler::<(), rustc_driver_impl[63982ee25ad4258]::run_compiler::{closure#0}>::{closure#1}
  19:     0x7f24341e52f8 - std[3d755e9610f7e251]::sys::backtrace::__rust_begin_short_backtrace::<rustc_interface[ca8d5c69dfd7f14d]::util::run_in_thread_with_globals<rustc_interface[ca8d5c69dfd7f14d]::util::run_in_thread_pool_with_globals<rustc_interface[ca8d5c69dfd7f14d]::interface::run_compiler<(), rustc_driver_impl[63982ee25ad4258]::run_compiler::{closure#0}>::{closure#1}, ()>::{closure#0}, ()>::{closure#0}::{closure#0}, ()>
  20:     0x7f24341e4fd6 - <<std[3d755e9610f7e251]::thread::Builder>::spawn_unchecked_<rustc_interface[ca8d5c69dfd7f14d]::util::run_in_thread_with_globals<rustc_interface[ca8d5c69dfd7f14d]::util::run_in_thread_pool_with_globals<rustc_interface[ca8d5c69dfd7f14d]::interface::run_compiler<(), rustc_driver_impl[63982ee25ad4258]::run_compiler::{closure#0}>::{closure#1}, ()>::{closure#0}, ()>::{closure#0}::{closure#0}, ()>::{closure#1} as core[557129ac99d5593e]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
  21:     0x7f24341eaebd - std::sys::pal::unix::thread::Thread::new::thread_start::h94d994b2c0a286ed
  22:     0x7f242daa57eb - <unknown>
  23:     0x7f242db2918c - <unknown>
  24:                0x0 - <unknown>


rustc version: 1.90.0-nightly (2a023bf80 2025-07-10)
platform: x86_64-unknown-linux-gnu

query stack during panic:
#0 [resolver_for_lowering_raw] getting the resolver for lowering
end of query stack
Backtrace

   Compiling touhou-formats v0.1.0 (/home/linkmauve/packages/pytouhou-hg/src/pytouhou/formats)
error[E0658]: the `concat` meta-variable expression is unstable
 --> formats/src/th06/anm0.rs:5:18
  |
5 |                 ${concat(le_, $arg_type)}
  |                  ^^^^^^^^^^^^^^^^^^^^^^^^
  |
  = note: see issue #124225 <https://github.com/rust-lang/rust/issues/124225> for more information
  = help: add `#![feature(macro_metavar_expr_concat)]` to the crate attributes to enable
  = note: this compiler was built on 2025-07-10; consider upgrading it if it is out of date


thread 'rustc' panicked at compiler/rustc_expand/src/mbe/transcribe.rs:559:46:
not implemented
stack backtrace:
   0: __rustc::rust_begin_unwind
   1: core::panicking::panic_fmt
   2: core::panicking::panic
   3: <rustc_expand::expand::MacroExpander>::fully_expand_fragment
   4: <rustc_expand::expand::MacroExpander>::expand_crate
   5: rustc_interface::passes::configure_and_expand
   6: rustc_interface::passes::resolver_for_lowering_raw
      [... omitted 2 frames ...]
   7: rustc_interface::passes::create_and_enter_global_ctxt::<core::option::Option<rustc_interface::queries::Linker>, rustc_driver_impl::run_compiler::{closure#0}::{closure#2}>::{closure#2}::{closure#0}
   8: rustc_interface::interface::run_compiler::<(), 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 `/home/linkmauve/packages/pytouhou-hg/src/pytouhou/rustc-ice-2025-07-11T23_30_59-1699990.txt` to your bug report

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

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

query stack during panic:
#0 [resolver_for_lowering_raw] getting the resolver for lowering
end of query stack
For more information about this error, try `rustc --explain E0658`.
error: could not compile `touhou-formats` (lib) due to 1 previous error

Metadata

Metadata

Assignees

No one assigned

    Labels

    C-bugCategory: This is a bug.F-macro_metavar_expr_concat`#![feature(macro_metavar_expr_concat)]`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.needs-triageThis issue may need triage. Remove it if it has been sufficiently triaged.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions