diff options
| author | Michael Dusan <michael.dusan@gmail.com> | 2019-04-14 22:47:53 -0400 |
|---|---|---|
| committer | Andrew Kelley <andrew@ziglang.org> | 2019-04-16 13:55:23 -0400 |
| commit | 611d4bc6a1a99f4364b690dea688e81dd599daae (patch) | |
| tree | bf54f26b0e1a80dd8e26035db431e3585143d07b /src/analyze.cpp | |
| parent | 52caf311bbcd2f7792d19cb11dbae26eb59873fe (diff) | |
| download | zig-611d4bc6a1a99f4364b690dea688e81dd599daae.tar.gz zig-611d4bc6a1a99f4364b690dea688e81dd599daae.zip | |
stage1: const_values_equal support tagged union
Diffstat (limited to 'src/analyze.cpp')
| -rw-r--r-- | src/analyze.cpp | 7 |
1 files changed, 3 insertions, 4 deletions
diff --git a/src/analyze.cpp b/src/analyze.cpp index 730c52c927..2775c05b79 100644 --- a/src/analyze.cpp +++ b/src/analyze.cpp @@ -5158,11 +5158,10 @@ bool const_values_equal(CodeGen *g, ConstExprValue *a, ConstExprValue *b) { if (bigint_cmp(&union1->tag, &union2->tag) == CmpEQ) { TypeUnionField *field = find_union_field_by_tag(a->type, &union1->tag); assert(field != nullptr); - if (type_has_bits(field->type_entry)) { - zig_panic("TODO const expr analyze union field value for equality"); - } else { + if (!type_has_bits(field->type_entry)) return true; - } + assert(find_union_field_by_tag(a->type, &union2->tag) != nullptr); + return const_values_equal(g, union1->payload, union2->payload); } return false; } |
