Commit 5b156031e9

Andrew Kelley <superjoe30@gmail.com>
2018-01-03 22:05:37
enum tag values are expressions so no parentheses needed
1 parent 5c988cc
Changed files (2)
src
test
cases
src/parser.cpp
@@ -2552,7 +2552,7 @@ static AstNode *ast_parse_container_decl(ParseContext *pc, size_t *token_index,
             Token *eq_token = &pc->tokens->at(*token_index);
             if (eq_token->id == TokenIdEq) {
                 *token_index += 1;
-                field_node->data.struct_field.value = ast_parse_prefix_op_expr(pc, token_index, true);
+                field_node->data.struct_field.value = ast_parse_expression(pc, token_index, true);
             }
 
             Token *next_token = &pc->tokens->at(*token_index);
test/cases/enum.zig
@@ -377,3 +377,13 @@ test "switch on enum with one member is comptime known" {
     }
     @compileError("analysis should not reach here");
 }
+
+const EnumWithTagValues = enum(u4) {
+    A = 1 << 0,
+    B = 1 << 1,
+    C = 1 << 2,
+    D = 1 << 3,
+};
+test "enum with tag values don't require parens" {
+    assert(u4(EnumWithTagValues.C) == 0b0100);
+}