Open
Description
I tried this code:
macro_rules! from_cow_impls {
($( $from: ty ),+ $(,)? ) => {
from_cow_impls!(
$($from, Cow::from),+
);
};
($( $from: ty, $normalizer: expr ),+ $(,)? ) => {
$( impl<'a> From<$from> for LhsValue<'a> {
fn from(val: $from) -> Self {
LhsValue::Bytes($normalizer(val))
}
} )+
};
}
from_cow_impls!(
&'a [u8],
Vec<u8>,
);
from_cow_impls!(
&'a str, |x: &'a str| Cow::from(x.as_bytes()),
String, |x: String| Cow::from(x.into_bytes()),
);
I expected to see this happen: Compilation succeeds or errors.
Instead, this happened: The compiler hangs indefinitely. GDB shows it stuck in https://doc.rust-lang.org/nightly/nightly-rustc/rustc_expand/mbe/macro_parser/struct.TtParser.html#method.parse_tt.
Meta
rustc --version --verbose
:
rustc 1.59.0 (9d1b2106e 2022-02-23)
Backtrace
(gdb) thread apply all where
Thread 2 (Thread 0x7fffee5ff700 (LWP 1722086)):
#0 0x00007ffff646182f in <rustc_parse::parser::Parser>::parse_nonterminal () from /home/jnelson/.local/lib/rustup/toolchains/stable-x86_64-unknown-linux-gnu/bin/../lib/librustc_driver-028c2c06c3edd7fd.so
#1 0x00007ffff6409ea2 in rustc_expand::mbe::macro_parser::parse_tt () from /home/jnelson/.local/lib/rustup/toolchains/stable-x86_64-unknown-linux-gnu/bin/../lib/librustc_driver-028c2c06c3edd7fd.so
#2 0x00007ffff63febb2 in <rustc_expand::mbe::macro_rules::MacroRulesMacroExpander as rustc_expand::base::TTMacroExpander>::expand () from /home/jnelson/.local/lib/rustup/toolchains/stable-x86_64-unknown-linux-gnu/bin/../lib/librustc_driver-028c2c06c3edd7fd.so
#3 0x00007ffff63bd29c in <rustc_expand::expand::MacroExpander>::fully_expand_fragment () from /home/jnelson/.local/lib/rustup/toolchains/stable-x86_64-unknown-linux-gnu/bin/../lib/librustc_driver-028c2c06c3edd7fd.so
#4 0x00007ffff6d5b2a1 in <rustc_expand::expand::MacroExpander>::expand_crate () from /home/jnelson/.local/lib/rustup/toolchains/stable-x86_64-unknown-linux-gnu/bin/../lib/librustc_driver-028c2c06c3edd7fd.so
#5 0x00007ffff67a9143 in <rustc_session::session::Session>::time::<core::result::Result<rustc_ast::ast::Crate, rustc_errors::ErrorReported>, rustc_interface::passes::configure_and_expand::{closure#1}> () from /home/jnelson/.local/lib/rustup/toolchains/stable-x86_64-unknown-linux-gnu/bin/../lib/librustc_driver-028c2c06c3edd7fd.so
#6 0x00007ffff6789009 in rustc_interface::passes::configure_and_expand () from /home/jnelson/.local/lib/rustup/toolchains/stable-x86_64-unknown-linux-gnu/bin/../lib/librustc_driver-028c2c06c3edd7fd.so
#7 0x00007ffff678d597 in <rustc_interface::queries::Queries>::expansion () from /home/jnelson/.local/lib/rustup/toolchains/stable-x86_64-unknown-linux-gnu/bin/../lib/librustc_driver-028c2c06c3edd7fd.so
#8 0x00007ffff676b76a in <rustc_interface::interface::Compiler>::enter::<rustc_driver::run_compiler::{closure#1}::{closure#2}, core::result::Result<core::option::Option<rustc_interface::queries::Linker>, rustc_errors::ErrorReported>> () from /home/jnelson/.local/lib/rustup/toolchains/stable-x86_64-unknown-linux-gnu/bin/../lib/librustc_driver-028c2c06c3edd7fd.so
#9 0x00007ffff674e97c in rustc_span::with_source_map::<core::result::Result<(), rustc_errors::ErrorReported>, rustc_interface::interface::create_compiler_and_run<core::result::Result<(), rustc_errors::ErrorReported>, rustc_driver::run_compiler::{closure#1}>::{closure#1}> () from /home/jnelson/.local/lib/rustup/toolchains/stable-x86_64-unknown-linux-gnu/bin/../lib/librustc_driver-028c2c06c3edd7fd.so
#10 0x00007ffff676acfe in rustc_interface::interface::create_compiler_and_run::<core::result::Result<(), rustc_errors::ErrorReported>, rustc_driver::run_compiler::{closure#1}> () from /home/jnelson/.local/lib/rustup/toolchains/stable-x86_64-unknown-linux-gnu/bin/../lib/librustc_driver-028c2c06c3edd7fd.so
#11 0x00007ffff674fedb in <scoped_tls::ScopedKey<rustc_span::SessionGlobals>>::set::<rustc_interface::util::setup_callbacks_and_run_in_thread_pool_with_globals<rustc_interface::interface::run_compiler<core::result::Result<(), rustc_errors::ErrorReported>, rustc_driver::run_compiler::{closure#1}>::{closure#0}, core::result::Result<(), rustc_errors::ErrorReported>>::{closure#0}::{closure#0}, core::result::Result<(), rustc_errors::ErrorReported>> () from /home/jnelson/.local/lib/rustup/toolchains/stable-x86_64-unknown-linux-gnu/bin/../lib/librustc_driver-028c2c06c3edd7fd.so
#12 0x00007ffff674fcd5 in std::sys_common::backtrace::__rust_begin_short_backtrace::<rustc_interface::util::setup_callbacks_and_run_in_thread_pool_with_globals<rustc_interface::interface::run_compiler<core::result::Result<(), rustc_errors::ErrorReported>, rustc_driver::run_compiler::{closure#1}>::{closure#0}, core::result::Result<(), rustc_errors::ErrorReported>>::{closure#0}, core::result::Result<(), rustc_errors::ErrorReported>> () from /home/jnelson/.local/lib/rustup/toolchains/stable-x86_64-unknown-linux-gnu/bin/../lib/librustc_driver-028c2c06c3edd7fd.so
#13 0x00007ffff677b499 in <<std::thread::Builder>::spawn_unchecked<rustc_interface::util::setup_callbacks_and_run_in_thread_pool_with_globals<rustc_interface::interface::run_compiler<core::result::Result<(), rustc_errors::ErrorReported>, rustc_driver::run_compiler::{closure#1}>::{closure#0}, core::result::Result<(), rustc_errors::ErrorReported>>::{closure#0}, core::result::Result<(), rustc_errors::ErrorReported>>::{closure#1} as core::ops::function::FnOnce<()>>::call_once::{shim:vtable#0} () from /home/jnelson/.local/lib/rustup/toolchains/stable-x86_64-unknown-linux-gnu/bin/../lib/librustc_driver-028c2c06c3edd7fd.so
--Type <RET> for more, q to quit, c to continue without paging--c
#14 0x00007ffff413d073 in <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once () at /rustc/9d1b2106e23b1abd32fce1f17267604a5102f57a/library/alloc/src/boxed.rs:1854
#15 <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once () at /rustc/9d1b2106e23b1abd32fce1f17267604a5102f57a/library/alloc/src/boxed.rs:1854
#16 std::sys::unix::thread::Thread::new::thread_start () at library/std/src/sys/unix/thread.rs:108
#17 0x00007ffff405b609 in start_thread (arg=<optimized out>) at pthread_create.c:477
#18 0x00007ffff3f75293 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95
@rustbot label +A-macros