diff options
| author | Veikka Tuominen <git@vexu.eu> | 2020-12-28 00:55:44 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-12-28 00:55:44 +0200 |
| commit | d96f5b38a3d56c87f06ae301e9113ef28529e86e (patch) | |
| tree | dc707cbea555c2c9bda71459ba2f6c95bae99aeb /src/stage1/analyze.cpp | |
| parent | 5acfaa35d3320c7595262b4d97ba4cdc3a1afc7b (diff) | |
| parent | 795770bcb489c8bb1a042bcfd9070dd6a77e0057 (diff) | |
| download | zig-d96f5b38a3d56c87f06ae301e9113ef28529e86e.tar.gz zig-d96f5b38a3d56c87f06ae301e9113ef28529e86e.zip | |
Merge pull request #7556 from Vexu/translate-c
some fixes
Diffstat (limited to 'src/stage1/analyze.cpp')
| -rw-r--r-- | src/stage1/analyze.cpp | 20 |
1 files changed, 14 insertions, 6 deletions
diff --git a/src/stage1/analyze.cpp b/src/stage1/analyze.cpp index fd82a30ce0..5f86321e9d 100644 --- a/src/stage1/analyze.cpp +++ b/src/stage1/analyze.cpp @@ -7232,13 +7232,13 @@ bool const_values_equal(CodeGen *g, ZigValue *a, ZigValue *b) { } return true; case ZigTypeIdFnFrame: - zig_panic("TODO"); + zig_panic("TODO: const_values_equal ZigTypeIdFnFrame"); case ZigTypeIdAnyFrame: - zig_panic("TODO"); + zig_panic("TODO: const_values_equal ZigTypeIdAnyFrame"); case ZigTypeIdUndefined: - zig_panic("TODO"); + zig_panic("TODO: const_values_equal ZigTypeIdUndefined"); case ZigTypeIdNull: - zig_panic("TODO"); + zig_panic("TODO: const_values_equal ZigTypeIdNull"); case ZigTypeIdOptional: if (get_src_ptr_type(a->type) != nullptr) return const_values_equal_ptr(a, b); @@ -7247,8 +7247,16 @@ bool const_values_equal(CodeGen *g, ZigValue *a, ZigValue *b) { } else { return const_values_equal(g, a->data.x_optional, b->data.x_optional); } - case ZigTypeIdErrorUnion: - zig_panic("TODO"); + case ZigTypeIdErrorUnion: { + bool a_is_err = a->data.x_err_union.error_set->data.x_err_set != nullptr; + bool b_is_err = b->data.x_err_union.error_set->data.x_err_set != nullptr; + if (a_is_err != b_is_err) return false; + if (a_is_err) { + return const_values_equal(g, a->data.x_err_union.error_set, b->data.x_err_union.error_set); + } else { + return const_values_equal(g, a->data.x_err_union.payload, b->data.x_err_union.payload); + } + } case ZigTypeIdBoundFn: case ZigTypeIdInvalid: case ZigTypeIdUnreachable: |
