Skip to content

Compiler crash on macro_rules #27092

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
Nashenas88 opened this issue Jul 17, 2015 · 0 comments
Closed

Compiler crash on macro_rules #27092

Nashenas88 opened this issue Jul 17, 2015 · 0 comments
Labels
I-ICE Issue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️

Comments

@Nashenas88
Copy link
Contributor

This macro code and invocation:

macro_rules! test_cases {
    (
        $(#[$case_name:ident($($test_case:expr),+)])+
        $test_name:ident ($($param_name:ident),+)
        $(use $paths::path;)*
        $test_code:block
    ) => ();
}

test_cases!(
    #[a(1)]
    t (c) { }
);

causes the following backtrace:

   Compiling compiler_bug v0.1.0 (file:///Users/paul/programming/crypto-challenges/rust/compiler_bug)
     Running `rustc src/lib.rs --crate-name compiler_bug --crate-type lib -g --out-dir /Users/paul/programming/crypto-challenges/rust/compiler_bug/target/debug --emit=dep-info,link -L dependency=/Users/paul/programming/crypto-challenges/rust/compiler_bug/target/debug -L dependency=/Users/paul/programming/crypto-challenges/rust/compiler_bug/target/debug/deps`
error: internal compiler error: unexpected panic
note: the compiler unexpectedly panicked. this is a bug.
note: we would appreciate a bug report: https://github.com/rust-lang/rust/blob/master/CONTRIBUTING.md#bug-reports
thread 'rustc' panicked at 'Cannot fill in a NT', ../src/libsyntax/ext/tt/macro_parser.rs:234

stack backtrace:
   1:        0x110dd3e65 - sys::backtrace::write::h70b2041760008869Yos
   2:        0x110ddcd03 - panicking::on_panic::h9b475f8994506859ZMw
   3:        0x110d97f12 - rt::unwind::begin_unwind_inner::he74af745bdaff759bvw
   4:        0x10e604c46 - rt::unwind::begin_unwind::h16174450654587449181
   5:        0x10e9333ff - ext::tt::macro_parser::nameize::n_rec::hcfdb28cfef92d20fHQf
   6:        0x10e931f27 - ext::tt::macro_parser::nameize::n_rec::hcfdb28cfef92d20fHQf
   7:        0x10e931db5 - ext::tt::macro_parser::nameize::h2b9ebd3a6f0d2a4fkQf
   8:        0x10e644df0 - ext::tt::macro_parser::parse::h6807f00f2a206301PXf
   9:        0x10e63fa4e - ast::TokenTree::parse::hfbf0d38135f4a437d8l
  10:        0x10e9366ad - ext::tt::macro_rules::MacroRulesMacroExpander.TTMacroExpander::expand::h4a0b3360049a63d69sg
  11:        0x10e884946 - ext::expand::expand_item_mac::h52e95ad5cea7e1157Cb
  12:        0x10e8723c7 - ext::expand::expand_annotatable::ha14bcb538e37526fy7b
  13:        0x10e86e701 - ext::expand::expand_item::h46f498d0025bee765zb
  14:        0x10e87b59a - iter::FlatMap<I, U, F>.Iterator::next::h2806753839147340092
  15:        0x10e87a557 - vec::Vec<T>.FromIterator<T>::from_iter::h7746685027599766033
  16:        0x10e879c6f - fold::noop_fold_mod::h8262654569662317362
  17:        0x10e875c5d - ext::expand::expand_item_underscore::h44e87dc09c0e560bGAb
  18:        0x10e8d8944 - fold::Folder::fold_item_simple::h13893162469570453607
  19:        0x10e8d8513 - ptr::P<T>::map::h18263047643979897990
  20:        0x10e87343d - ext::expand::expand_annotatable::ha14bcb538e37526fy7b
  21:        0x10e86e701 - ext::expand::expand_item::h46f498d0025bee765zb
  22:        0x10e8e1baf - ext::expand::expand_crate::hc3936c513fa4cc436yc
  23:        0x10d30c3e2 - driver::phase_2_configure_and_expand::closure.21536
  24:        0x10d2bc902 - driver::phase_2_configure_and_expand::h61a8e892965c822bita
  25:        0x10d2ab2bd - driver::compile_input::he37316fd3b638038Tba
  26:        0x10d391d7f - run_compiler::hfb0cce3b8e447a58A7b
  27:        0x10d38f633 - boxed::F.FnBox<A>::call_box::h6934248972739997927
  28:        0x10d38edf7 - rt::unwind::try::try_fn::h1907535934500506241
  29:        0x110e6a528 - rust_try_inner
  30:        0x110e6a515 - rust_try
  31:        0x110dc63d5 - rt::unwind::try::inner_try::hb0b2c8334dfc8a584qw
  32:        0x10d38f028 - boxed::F.FnBox<A>::call_box::h7914022192141927844
  33:        0x110ddb78d - sys::thread::Thread::new::thread_start::hf92f61e537ba20b2ePv
  34:     0x7fff95266267 - _pthread_body
  35:     0x7fff952661e4 - _pthread_start

Could not compile `compiler_bug`.

Caused by:
  Process didn't exit successfully: `rustc src/lib.rs --crate-name compiler_bug --crate-type lib -g --out-dir /Users/paul/programming/crypto-challenges/rust/compiler_bug/target/debug --emit=dep-info,link -L dependency=/Users/paul/programming/crypto-challenges/rust/compiler_bug/target/debug -L dependency=/Users/paul/programming/crypto-challenges/rust/compiler_bug/target/debug/deps` (exit code: 101)

Edit: Initially I thought this was malformed because of the use $paths line being a sequence just after the enclosed $param_name, but I see that the parentheses around the $param_name section is enclosed, so there aren't two sequences immediately next to each other.

@Nashenas88 Nashenas88 changed the title Compiler crash on badly formatted macro_rules Compiler crash on macro_rules Jul 17, 2015
@steveklabnik steveklabnik added the I-ICE Issue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️ label Jul 17, 2015
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
I-ICE Issue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️
Projects
None yet
Development

No branches or pull requests

2 participants