aboutsummaryrefslogtreecommitdiff
path: root/src/analyze.cpp
diff options
context:
space:
mode:
authorxackus <14938807+xackus@users.noreply.github.com>2020-05-31 19:15:21 +0200
committerVexu <git@vexu.eu>2020-08-17 20:45:34 +0300
commit65185016f15ca69363113f85537542b0bdebe33f (patch)
tree03adcf96a9a905bc7575fe745bfba5681c0f1d8f /src/analyze.cpp
parent5cb96681d92e7a410577215ff057e459f10304dc (diff)
downloadzig-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.cpp9
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: