From 7bf1481e25ea09b0f49da981f868403c56f45092 Mon Sep 17 00:00:00 2001 From: John Hodge Date: Sat, 30 Dec 2017 15:18:17 +0800 Subject: macro_rules - Fix a few edge cases --- src/macro_rules/parse.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'src/macro_rules/parse.cpp') diff --git a/src/macro_rules/parse.cpp b/src/macro_rules/parse.cpp index f5b0f0e4..b3b1014e 100644 --- a/src/macro_rules/parse.cpp +++ b/src/macro_rules/parse.cpp @@ -212,7 +212,10 @@ public: // TODO: `error-chain`'s quick_error macro has an arm which refers to an undefined metavar. // - Maybe emit a warning and use a marker index. WARNING(lex.point_span(), W0000, "Macro variable $" << name << " not found"); - idx = (1<<16)-1; // NOTE: Encoded as a u16 + // Emit the literal $ + ret.push_back( MacroExpansionEnt(Token(TOK_DOLLAR)) ); + ret.push_back( MacroExpansionEnt(mv$(tok)) ); + continue ; } if( var_set_ptr ) { var_set_ptr->insert( ::std::make_pair(idx,true) ); -- cgit v1.2.3