diff options
author | John Hodge <tpg@ucc.asn.au> | 2017-05-13 13:45:51 +0800 |
---|---|---|
committer | John Hodge <tpg@ucc.asn.au> | 2017-05-13 13:45:51 +0800 |
commit | f997bde2fa83506ea66768a8e2dd8080b6a0547a (patch) | |
tree | 189e9e8d51fe4358211f2e48f5c400b7b38fcd56 /src/macro_rules | |
parent | e7f840ec5ae243a6d050a692fd6633769fc147a5 (diff) | |
download | mrust-f997bde2fa83506ea66768a8e2dd8080b6a0547a.tar.gz |
Parse - Remove TOK_MACRO
Diffstat (limited to 'src/macro_rules')
-rw-r--r-- | src/macro_rules/mod.cpp | 1 | ||||
-rw-r--r-- | src/macro_rules/parse.cpp | 7 |
2 files changed, 4 insertions, 4 deletions
diff --git a/src/macro_rules/mod.cpp b/src/macro_rules/mod.cpp index f685f6dc..eb0f9be0 100644 --- a/src/macro_rules/mod.cpp +++ b/src/macro_rules/mod.cpp @@ -76,7 +76,6 @@ bool is_token_expr(eTokenType tt) { case TOK_EXCLAM: // Invert case TOK_RWORD_BOX: // Box // Composite values - case TOK_MACRO: case TOK_PAREN_OPEN: // Parenthesised case TOK_SQUARE_OPEN: // Array diff --git a/src/macro_rules/parse.cpp b/src/macro_rules/parse.cpp index fa82e0e0..8264180f 100644 --- a/src/macro_rules/parse.cpp +++ b/src/macro_rules/parse.cpp @@ -48,8 +48,9 @@ public: case TOK_DOLLAR: switch( GET_TOK(tok, lex) ) { + case TOK_RWORD_TYPE: case TOK_IDENT: { - ::std::string name = mv$(tok.str()); + ::std::string name = tok.type() == TOK_IDENT ? mv$(tok.str()) : FMT(tok); GET_CHECK_TOK(tok, lex, TOK_COLON); GET_CHECK_TOK(tok, lex, TOK_IDENT); ::std::string type = mv$(tok.str()); @@ -199,10 +200,10 @@ public: } } - else if( tok.type() == TOK_IDENT ) + else if( tok.type() == TOK_IDENT || tok.type() == TOK_RWORD_TYPE ) { // Look up the named parameter in the list of param names for this arm - const auto& name = tok.str(); + auto name = tok.type() == TOK_IDENT ? tok.str() : FMT(tok); unsigned int idx = ::std::find(var_names.begin(), var_names.end(), name) - var_names.begin(); if( idx == var_names.size() ) ERROR(lex.getPosition(), E0000, "Macro variable $" << name << " not found"); |