summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJohn Hodge (sonata) <tpg@mutabah.net>2015-01-20 21:32:16 +0800
committerJohn Hodge (sonata) <tpg@mutabah.net>2015-01-20 21:32:16 +0800
commit2306ea6076531132e990d038bdf759b71d9654db (patch)
tree17b9630505d592f01c07d74bab96add9523e9b0a /src
parent2b9a03f6b71446dceb12f5d097f066e3c9354210 (diff)
downloadmrust-2306ea6076531132e990d038bdf759b71d9654db.tar.gz
Fixed handling of "empty" enum variants (type to unit, not empty tuple)
Diffstat (limited to 'src')
-rw-r--r--src/parse/root.cpp8
1 files changed, 6 insertions, 2 deletions
diff --git a/src/parse/root.cpp b/src/parse/root.cpp
index 1ab010bd..2c559d84 100644
--- a/src/parse/root.cpp
+++ b/src/parse/root.cpp
@@ -545,9 +545,9 @@ AST::Enum Parse_EnumDef(TokenStream& lex, const ::std::vector<AST::MetaItem> met
{
CHECK_TOK(tok, TOK_IDENT);
::std::string name = tok.str();
- ::std::vector<TypeRef> types;
if( GET_TOK(tok, lex) == TOK_PAREN_OPEN )
{
+ ::std::vector<TypeRef> types;
// Get type list
// TODO: Handle 'Variant()'?
do
@@ -556,9 +556,13 @@ AST::Enum Parse_EnumDef(TokenStream& lex, const ::std::vector<AST::MetaItem> met
} while( GET_TOK(tok, lex) == TOK_COMMA );
CHECK_TOK(tok, TOK_PAREN_CLOSE);
GET_TOK(tok, lex);
+ variants.push_back( AST::StructItem(::std::move(name), TypeRef(TypeRef::TagTuple(), ::std::move(types))) );
+ }
+ else
+ {
+ variants.push_back( AST::StructItem(::std::move(name), TypeRef(TypeRef::TagUnit())) );
}
- variants.push_back( AST::StructItem(::std::move(name), TypeRef(TypeRef::TagTuple(), ::std::move(types))) );
if( tok.type() != TOK_COMMA )
break;
}