diff options
author | John Hodge <tpg@mutabah.net> | 2016-02-25 18:44:27 +0800 |
---|---|---|
committer | John Hodge <tpg@mutabah.net> | 2016-02-25 18:44:27 +0800 |
commit | d47fda127598279cf0193b411d67dbb96ca50233 (patch) | |
tree | f43ab1821972980afdb6cc4c7f91c4d6456f1408 /src | |
parent | 7a507fcb4955715ebccd1eb85cf792a1a7802c61 (diff) | |
download | mrust-d47fda127598279cf0193b411d67dbb96ca50233.tar.gz |
Parse - Parse (but don't use) attributes on enum variant fields
Diffstat (limited to 'src')
-rw-r--r-- | src/parse/root.cpp | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/src/parse/root.cpp b/src/parse/root.cpp index ab760a19..eccac880 100644 --- a/src/parse/root.cpp +++ b/src/parse/root.cpp @@ -698,6 +698,15 @@ AST::Enum Parse_EnumDef(TokenStream& lex, const AST::MetaItems meta_items) GET_TOK(tok, lex);
break;
}
+
+ AST::MetaItems field_attrs;
+ while( LOOK_AHEAD(lex) == TOK_ATTR_OPEN )
+ {
+ GET_TOK(tok, lex);
+ field_attrs.push_back( Parse_MetaItem(lex) );
+ GET_CHECK_TOK(tok, lex, TOK_SQUARE_CLOSE);
+ }
+
types.push_back( Parse_Type(lex) );
} while( GET_TOK(tok, lex) == TOK_COMMA );
CHECK_TOK(tok, TOK_PAREN_CLOSE);
@@ -714,10 +723,20 @@ AST::Enum Parse_EnumDef(TokenStream& lex, const AST::MetaItems meta_items) GET_TOK(tok, lex);
break;
}
+
+ AST::MetaItems field_attrs;
+ while( LOOK_AHEAD(lex) == TOK_ATTR_OPEN )
+ {
+ GET_TOK(tok, lex);
+ field_attrs.push_back( Parse_MetaItem(lex) );
+ GET_CHECK_TOK(tok, lex, TOK_SQUARE_CLOSE);
+ }
+
GET_CHECK_TOK(tok, lex, TOK_IDENT);
auto name = mv$(tok.str());
GET_CHECK_TOK(tok, lex, TOK_COLON);
auto ty = Parse_Type(lex);
+ // TODO: Field attributes
fields.push_back( ::AST::Item<TypeRef>(mv$(name), mv$(ty), true) );
} while( GET_TOK(tok, lex) == TOK_COMMA );
CHECK_TOK(tok, TOK_BRACE_CLOSE);
|