From 2306ea6076531132e990d038bdf759b71d9654db Mon Sep 17 00:00:00 2001 From: "John Hodge (sonata)" Date: Tue, 20 Jan 2015 21:32:16 +0800 Subject: Fixed handling of "empty" enum variants (type to unit, not empty tuple) --- src/parse/root.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'src') 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 met { CHECK_TOK(tok, TOK_IDENT); ::std::string name = tok.str(); - ::std::vector types; if( GET_TOK(tok, lex) == TOK_PAREN_OPEN ) { + ::std::vector types; // Get type list // TODO: Handle 'Variant()'? do @@ -556,9 +556,13 @@ AST::Enum Parse_EnumDef(TokenStream& lex, const ::std::vector 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; } -- cgit v1.2.3