diff options
| author | xackus <14938807+xackus@users.noreply.github.com> | 2020-05-31 19:15:21 +0200 |
|---|---|---|
| committer | Vexu <git@vexu.eu> | 2020-08-17 20:45:34 +0300 |
| commit | 65185016f15ca69363113f85537542b0bdebe33f (patch) | |
| tree | 03adcf96a9a905bc7575fe745bfba5681c0f1d8f /src/analyze.cpp | |
| parent | 5cb96681d92e7a410577215ff057e459f10304dc (diff) | |
| download | zig-65185016f15ca69363113f85537542b0bdebe33f.tar.gz zig-65185016f15ca69363113f85537542b0bdebe33f.zip | |
stage1: fix non-exhaustive enums with one field
Diffstat (limited to 'src/analyze.cpp')
| -rw-r--r-- | src/analyze.cpp | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/src/analyze.cpp b/src/analyze.cpp index 6a4a2ec052..4920571438 100644 --- a/src/analyze.cpp +++ b/src/analyze.cpp @@ -7303,7 +7303,14 @@ void render_const_value(CodeGen *g, Buf *buf, ZigValue *const_val) { case ZigTypeIdEnum: { TypeEnumField *field = find_enum_field_by_tag(type_entry, &const_val->data.x_enum_tag); - buf_appendf(buf, "%s.%s", buf_ptr(&type_entry->name), buf_ptr(field->name)); + if(field != nullptr){ + buf_appendf(buf, "%s.%s", buf_ptr(&type_entry->name), buf_ptr(field->name)); + } else { + // untagged value in a non-exhaustive enum + buf_appendf(buf, "%s.(", buf_ptr(&type_entry->name)); + bigint_append_buf(buf, &const_val->data.x_enum_tag, 10); + buf_appendf(buf, ")"); + } return; } case ZigTypeIdErrorUnion: |
