aboutsummaryrefslogtreecommitdiff
path: root/src/analyze.cpp
diff options
context:
space:
mode:
authorMichael Dusan <michael.dusan@gmail.com>2019-04-14 22:47:53 -0400
committerAndrew Kelley <andrew@ziglang.org>2019-04-16 13:55:23 -0400
commit611d4bc6a1a99f4364b690dea688e81dd599daae (patch)
treebf54f26b0e1a80dd8e26035db431e3585143d07b /src/analyze.cpp
parent52caf311bbcd2f7792d19cb11dbae26eb59873fe (diff)
downloadzig-611d4bc6a1a99f4364b690dea688e81dd599daae.tar.gz
zig-611d4bc6a1a99f4364b690dea688e81dd599daae.zip
stage1: const_values_equal support tagged union
Diffstat (limited to 'src/analyze.cpp')
-rw-r--r--src/analyze.cpp7
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;
}