Skip to content
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

Compiler crash when macro generates associated const with stringify #38160

Closed
MasonRemaley opened this issue Dec 4, 2016 · 1 comment · Fixed by #42230
Closed

Compiler crash when macro generates associated const with stringify #38160

MasonRemaley opened this issue Dec 4, 2016 · 1 comment · Fixed by #42230
Labels
E-needs-test Call for participation: An issue has been fixed and does not reproduce, but no test has been added. I-ICE Issue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️

Comments

@MasonRemaley
Copy link

I get a compiler crash when running the following code.

I get the crash with or without #![feature(associated_consts)] at the top of the file, but I don't get it if I generate a normal constant, if I replace the stringify!(abc) with a string literal, or if I write the code the macro generates directly into the source instead of generating it through a macro.

I tried this code:

trait MyTrait {
    const MY_CONST: &'static str;
}

macro_rules! my_macro {
    () => {
        struct MyStruct;

        impl MyTrait for MyStruct {
            // Note the stringify here, without it I don't get a crash.
            const MY_CONST: &'static str = stringify!(abc);
        }
    }
}

my_macro!();

fn main() {}

Error message:

thread 'rustc' panicked at 'adding a def'n for node-id NodeId(3) and data Initializer but a previous def'n exists: DefData { key: DefKey { parent: Some(DefIndex(0)), disambiguated_data: DisambiguatedDefPathData { data: TypeNs("std"), disambiguator: 0 } }, node_id: NodeId(3) }', ../src/librustc/hir/map/definitions.rs:279

Meta

rustc --version --verbose:

rustc 1.15.0-nightly (c80c31a50 2016-12-02)
binary: rustc
commit-hash: c80c31a502c838f9ec06f1003d7c61cf9de9d551
commit-date: 2016-12-02
host: x86_64-apple-darwin
release: 1.15.0-nightly
LLVM version: 3.9

Backtrace:

stack backtrace:
   1:        0x1102ed0da - std::sys::imp::backtrace::tracing::imp::write::hbea47d9dd19b523c
   2:        0x1102fa3cf - std::panicking::default_hook::{{closure}}::h6875a2976258b020
   3:        0x1102f9f7d - std::panicking::default_hook::h88ffbc5922643264
   4:        0x1102fa896 - std::panicking::rust_panic_with_hook::hc790e47d4ecc86cd
   5:        0x1102fa734 - std::panicking::begin_panic::hc066339e2fdc17d1
   6:        0x1102fa652 - std::panicking::begin_panic_fmt::h5912b2d2df332044
   7:        0x10cbdc3c5 - rustc::hir::map::definitions::Definitions::create_def_with_parent::h9f915077b7729a67
   8:        0x10cbd7275 - <rustc::hir::map::def_collector::DefCollector<'a> as syntax::visit::Visitor>::visit_impl_item::hfd39f06fd36cebc4
   9:        0x10cb68201 - syntax::visit::walk_item::hf2d1c4f2e66576d9
  10:        0x10cbd6c75 - <rustc::hir::map::def_collector::DefCollector<'a> as syntax::visit::Visitor>::visit_item::{{closure}}::hd7b5b0a8a329ace5
  11:        0x10cbd65c2 - <rustc::hir::map::def_collector::DefCollector<'a> as syntax::visit::Visitor>::visit_item::h763ef3a101744485
  12:        0x10ca5a41e - rustc_resolve::macros::<impl syntax::ext::base::Resolver for rustc_resolve::Resolver<'a>>::visit_expansion::h7d935db3784368ad
  13:        0x10fd0717e - syntax::ext::expand::MacroExpander::collect_invocations::h67e2a1c913dc4591
  14:        0x10fd0632e - syntax::ext::expand::MacroExpander::expand::hd3e73837bd4e019c
  15:        0x10fd05456 - syntax::ext::expand::MacroExpander::expand_crate::hdb654461100f1c42
  16:        0x10bae5ceb - rustc_driver::driver::phase_2_configure_and_expand::{{closure}}::h78edc3698ca57871
  17:        0x10badec60 - rustc_driver::driver::phase_2_configure_and_expand::hb40d70b49cec9f8f
  18:        0x10bad8840 - rustc_driver::driver::compile_input::h8e119234b60571d5
  19:        0x10bb20f8b - rustc_driver::run_compiler::h57c4f233cd1a0c04
  20:        0x10ba3fce8 - std::panicking::try::do_call::hf679f17bf3b43b0b
  21:        0x1102fce4a - __rust_maybe_catch_panic
  22:        0x10ba62bdf - <F as alloc::boxed::FnBox<A>>::call_box::h21b5b32059700da6
  23:        0x1102f9514 - std::sys::imp::thread::Thread::new::thread_start::h8084b1107992ae5b
  24:     0x7fff99c7eaaa - _pthread_body
  25:     0x7fff99c7e9f6 - _pthread_start

error: Could not compile `BugDemo`.
@TimNN TimNN added the I-ICE Issue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️ label Dec 4, 2016
@Mark-Simulacrum
Copy link
Member

This compiles today; E-needstest.

@Mark-Simulacrum Mark-Simulacrum added the E-needs-test Call for participation: An issue has been fixed and does not reproduce, but no test has been added. label May 16, 2017
venkatagiri added a commit to venkatagiri/rust that referenced this issue May 25, 2017
Mark-Simulacrum added a commit to Mark-Simulacrum/rust that referenced this issue May 26, 2017
frewsxcv added a commit to frewsxcv/rust that referenced this issue May 26, 2017
frewsxcv added a commit to frewsxcv/rust that referenced this issue May 26, 2017
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
E-needs-test Call for participation: An issue has been fixed and does not reproduce, but no test has been added. I-ICE Issue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants