summaryrefslogtreecommitdiff
path: root/src/parse/root.cpp
diff options
context:
space:
mode:
authorJohn Hodge <tpg@mutabah.net>2015-03-18 21:37:09 +0800
committerJohn Hodge <tpg@mutabah.net>2015-03-18 21:37:09 +0800
commit7c774049e8a539ee32923dfbf9ad0c0f36ab4323 (patch)
tree181288bbff011178de807dccb4cb5f5c61bd7952 /src/parse/root.cpp
parentafd9fe2cc7f43fd036837db10e71b04410fadf9a (diff)
downloadmrust-7c774049e8a539ee32923dfbf9ad0c0f36ab4323.tar.gz
Local macros, fixed array literals
Diffstat (limited to 'src/parse/root.cpp')
-rw-r--r--src/parse/root.cpp12
1 files changed, 7 insertions, 5 deletions
diff --git a/src/parse/root.cpp b/src/parse/root.cpp
index e721017a..f1e1acf9 100644
--- a/src/parse/root.cpp
+++ b/src/parse/root.cpp
@@ -316,8 +316,11 @@ TypeRef Parse_Type(TokenStream& lex)
lex.putback(tok);
do
{
- TypeRef type = Parse_Type(lex);
- types.push_back(type);
+ if( GET_TOK(tok, lex) == TOK_PAREN_CLOSE )
+ break;
+ else
+ lex.putback(tok);
+ types.push_back(Parse_Type(lex));
} while( GET_TOK(tok, lex) == TOK_COMMA );
CHECK_TOK(tok, TOK_PAREN_CLOSE);
return TypeRef(TypeRef::TagTuple(), types); }
@@ -1425,7 +1428,7 @@ MacroRule Parse_MacroRules_Var(TokenStream& lex)
return rule;
}
-void Parse_MacroRules(TokenStream& lex, AST::Module& mod, AST::MetaItems& meta_items)
+void Parse_MacroRules(TokenStream& lex, AST::Module& mod, AST::MetaItems meta_items)
{
TRACE_FUNCTION;
@@ -1507,8 +1510,7 @@ void Parse_ModRoot_Items(TokenStream& lex, AST::Crate& crate, AST::Module& mod,
case TOK_MACRO:
if( tok.str() == "macro_rules" )
{
- // TODO: Handle #[macro_export]
- Parse_MacroRules(lex, mod, meta_items);
+ Parse_MacroRules(lex, mod, ::std::move(meta_items));
}
else
{