Skip to content

ICE: unhandled token in quote! #35829

Closed
Closed
@mrhota

Description

@mrhota

In trying to repro #16935 I discovered this ICE in quote!:

thread 'rustc' panicked at 'unhandled token in quote!', ../src/libsyntax/ext/quote.rs:707
stack backtrace:
   1:        0x111037e79 - std::sys::backtrace::tracing::imp::write::h482d45d91246faa2
   2:        0x111046b70 - std::panicking::default_hook::_{{closure}}::h89158f66286b674e
   3:        0x111044e9f - std::panicking::default_hook::h9e30d428ee3b0c43
   4:        0x1110455a6 - std::panicking::rust_panic_with_hook::h2224f33fb7bf2f4c
   5:        0x1107fd4d4 - std::panicking::begin_panic::h6da27a7ee15843ce
   6:        0x1109e95f3 - syntax::ext::quote::expr_mk_token::h7c3422b80bef3bd5
   7:        0x1109ebdb0 - syntax::ext::quote::statements_mk_tt::he0f33941b94e20bb
   8:        0x1108203af - _<core..iter..FlatMap<I, U, F> as core..iter..iterator..Iterator>::next::hb7943eed4d804bfc
   9:        0x11081918f - _<core..iter..Chain<A, B> as core..iter..iterator..Iterator>::next::hf66dec9ac7ebfd3e
  10:        0x11081e49a - _<collections..vec..Vec<T> as core..iter..traits..FromIterator<T>>::from_iter::hb6ba9a4116122593
  11:        0x1109ea625 - syntax::ext::quote::statements_mk_tt::he0f33941b94e20bb
  12:        0x1109ed8e2 - syntax::ext::quote::statements_mk_tts::hc942124e7cb85dbc
  13:        0x1109eda54 - syntax::ext::quote::expand_tts::h25510a66e2e03c00
  14:        0x1109eefa4 - syntax::ext::quote::expand_parse_call::h362dceaee0d8b0c6
  15:        0x1109e4c6a - syntax::ext::quote::expand_quote_expr::h7f4c2771cabcf421
  16:        0x1109b07d5 - _<F as syntax..ext..base..TTMacroExpander>::expand::h2cbfb95c85d07886
  17:        0x1109cb75b - syntax::ext::expand::expand_mac_invoc::mac_result::ha3a8dfd05d9eecb6
  18:        0x11096d850 - _<syntax..ptr..P<T>>::and_then::h53ce1d732b16c30f
  19:        0x11088da64 - syntax::fold::Folder::fold_exprs::haec82b8e9fe75416
  20:        0x1108f0234 - syntax::fold::noop_fold_expr::hab84161d928c2074
  21:        0x1109c6d85 - syntax::ext::expand::expand_expr::hd4de34daa0a5a90a
  22:        0x11096d963 - _<syntax..ptr..P<T>>::and_then::h53ce1d732b16c30f
  23:        0x1109cd0de - syntax::ext::expand::expand_stmt::hf1246bdbc447b35b
  24:        0x11083d0c2 - _<collections..vec..Vec<T> as syntax..util..move_map..MoveMap<T>>::move_flat_map::h95ab7180e0970e65
  25:        0x1109dc77f - _<syntax..ext..expand..MacroExpander<'a, 'b> as syntax..fold..Folder>::fold_block::h84ca09e1246a6f7f
  26:        0x1108b2c3f - syntax::fold::noop_fold_item_kind::he96b2686f10d5f9d
  27:        0x1108bee78 - syntax::fold::noop_fold_item_simple::hb58741bcf641e653
  28:        0x1109d0d40 - syntax::ext::expand::expand_annotatable::hd731ac0c7a5098e1
  29:        0x1109cc7cf - syntax::ext::expand::expand_item::h34a68666bcb77b42
  30:        0x1109dc20a - _<syntax..ext..expand..MacroExpander<'a, 'b> as syntax..fold..Folder>::fold_item::h11dc20d6fdb44d60
  31:        0x1108bd942 - syntax::fold::noop_fold_mod::h7ccd83e899e81c3c
  32:        0x1108b26b2 - syntax::fold::noop_fold_item_kind::he96b2686f10d5f9d
  33:        0x1108bee78 - syntax::fold::noop_fold_item_simple::hb58741bcf641e653
  34:        0x1109d102b - syntax::ext::expand::expand_annotatable::hd731ac0c7a5098e1
  35:        0x1109cc7cf - syntax::ext::expand::expand_item::h34a68666bcb77b42
  36:        0x1109dc342 - _<syntax..ext..expand..MacroExpander<'a, 'b> as syntax..fold..Folder>::fold_item::h11dc20d6fdb44d60
  37:        0x1109db30e - _<syntax..ext..expand..MacroExpander<'a, 'b> as syntax..fold..Folder>::fold_crate::hb0a12b0d8df69afd
  38:        0x1109dda1e - syntax::ext::expand::expand_crate_with_expander::h77575f1d1b34ae40
  39:        0x1109dd4ba - syntax::ext::expand::expand_crate::h72ec18c6565094c4
  40:        0x10c3d668b - rustc_driver::driver::phase_2_configure_and_expand::_{{closure}}::hae7f286174f41285
  41:        0x10c389133 - rustc_driver::driver::phase_2_configure_and_expand::h7a450d24678fc450
  42:        0x10c38089c - rustc_driver::driver::compile_input::hd9ecc57abd3cba85
  43:        0x10c3b2579 - rustc_driver::run_compiler::h184264500271cc39
  44:        0x10c2fdc94 - std::panicking::try::do_call::h17a7a17ad7240c5c
  45:        0x11104d8aa - __rust_maybe_catch_panic
  46:        0x10c317d57 - _<F as alloc..boxed..FnBox<A>>::call_box::h93f9128277b2964a
  47:        0x111043c65 - std::sys::thread::Thread::new::thread_start::he0bf102845911132
  48:     0x7fff89ecf99c - _pthread_body
  49:     0x7fff89ecf919 - _pthread_start

caused by the following code:

#![feature(plugin_registrar, quote, rustc_private)]
#![crate_name = "synext"]
#![crate_type = "dylib"]

extern crate syntax;
extern crate rustc_plugin;
use rustc_plugin::Registry;

use syntax::ext::base::{MacResult, MacEager};
use syntax::tokenstream;
use syntax::codemap::Span;
use syntax::ext::base::ExtCtxt;

#[plugin_registrar]
pub fn registrar(reg: &mut Registry) {
    reg.register_macro("test", expand);
}

fn expand(cx: &mut ExtCtxt, _sp: Span,
          _tts: &[tokenstream::TokenTree]) -> Box<MacResult + 'static> {
    MacEager::expr(quote_expr!(cx,
                               std::io::stdout().write(b"one"); // <-- it doesn't like b""
    ))
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    I-ICEIssue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions