diff options
author | John Hodge <tpg@mutabah.net> | 2016-10-10 14:07:38 +0800 |
---|---|---|
committer | John Hodge <tpg@mutabah.net> | 2016-10-10 14:07:38 +0800 |
commit | 32ed843e8ebafc22f61c3f166bcb4af0ce7f4fd7 (patch) | |
tree | 0ad098392b603e5277dc9837ae55e5907863b72e /src/macro_rules | |
parent | 41a56d4a17132f67adb187aad3ab13a5486ee1c3 (diff) | |
download | mrust-32ed843e8ebafc22f61c3f166bcb4af0ce7f4fd7.tar.gz |
Parse - Fix a few cases where tokens were copied instead of cloned
Diffstat (limited to 'src/macro_rules')
-rw-r--r-- | src/macro_rules/eval.cpp | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/src/macro_rules/eval.cpp b/src/macro_rules/eval.cpp index 109e2c43..d37f0279 100644 --- a/src/macro_rules/eval.cpp +++ b/src/macro_rules/eval.cpp @@ -1029,11 +1029,11 @@ Token MacroExpander::realGetToken() while( const auto* next_ent_ptr = m_state.next_ent() ) { const auto& ent = *next_ent_ptr; - TU_MATCH( MacroExpansionEnt, (ent), (e), - (Token, + TU_IFLET(MacroExpansionEnt, ent, Token, e, return e; - ), - (NamedValue, + ) + else if( ent.is_NamedValue() ) { + const auto& e = ent.as_NamedValue(); if( e >> 30 ) { switch( e & 0x3FFFFFFF ) { @@ -1081,12 +1081,14 @@ Token MacroExpander::realGetToken() } } } - ), - (Loop, + } + else TU_IFLET(MacroExpansionEnt, ent, Loop, e, //assert( e.joiner.tok() != TOK_NULL ); return e.joiner; - ) ) + else { + throw ""; + } } DEBUG("EOF"); |