Commit b87686dfa0

Andrew Kelley <andrew@ziglang.org>
2019-08-11 19:43:44
fix enum with one member and custom tag type
1 parent 1b83ee7
Changed files (2)
src
test
stage1
behavior
src/ir.cpp
@@ -11938,7 +11938,6 @@ static IrInstruction *ir_analyze_enum_to_int(IrAnalyze *ira, IrInstruction *sour
     if (enum_type->data.enumeration.layout == ContainerLayoutAuto &&
         enum_type->data.enumeration.src_field_count == 1)
     {
-        assert(tag_type == ira->codegen->builtin_types.entry_num_lit_int);
         IrInstruction *result = ir_const(ira, source_instr, tag_type);
         init_const_bigint(&result->value, tag_type,
                 &enum_type->data.enumeration.fields[0].value);
test/stage1/behavior/enum.zig
@@ -982,3 +982,14 @@ test "enum literal casting to tagged union" {
         else => @panic("fail"),
     }
 }
+
+test "enum with one member and custom tag type" {
+    const E = enum(u2) {
+        One,
+    };
+    expect(@enumToInt(E.One) == 0);
+    const E2 = enum(u2) {
+        One = 2,
+    };
+    expect(@enumToInt(E2.One) == 2);
+}