summaryrefslogtreecommitdiff
path: root/src/macro_rules
diff options
context:
space:
mode:
authorJohn Hodge <tpg@ucc.asn.au>2017-05-13 13:45:51 +0800
committerJohn Hodge <tpg@ucc.asn.au>2017-05-13 13:45:51 +0800
commitf997bde2fa83506ea66768a8e2dd8080b6a0547a (patch)
tree189e9e8d51fe4358211f2e48f5c400b7b38fcd56 /src/macro_rules
parente7f840ec5ae243a6d050a692fd6633769fc147a5 (diff)
downloadmrust-f997bde2fa83506ea66768a8e2dd8080b6a0547a.tar.gz
Parse - Remove TOK_MACRO
Diffstat (limited to 'src/macro_rules')
-rw-r--r--src/macro_rules/mod.cpp1
-rw-r--r--src/macro_rules/parse.cpp7
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");