diff options
| author | Andrew Kelley <andrew@ziglang.org> | 2020-01-13 16:51:58 -0500 |
|---|---|---|
| committer | Andrew Kelley <andrew@ziglang.org> | 2020-01-16 21:58:52 -0500 |
| commit | 8bf425957b253d0ab2e4902d57340b19b7436698 (patch) | |
| tree | 3a62b6c16a64313195c5b01154bf8ee631aec97f /src/analyze.cpp | |
| parent | e48157c3cb817ff1551f74fc1da9f420e38ccbd5 (diff) | |
| download | zig-8bf425957b253d0ab2e4902d57340b19b7436698.tar.gz zig-8bf425957b253d0ab2e4902d57340b19b7436698.zip | |
fix regressions double implicit casting return ptr
Diffstat (limited to 'src/analyze.cpp')
| -rw-r--r-- | src/analyze.cpp | 31 |
1 files changed, 28 insertions, 3 deletions
diff --git a/src/analyze.cpp b/src/analyze.cpp index 14419d274c..94d0c66e19 100644 --- a/src/analyze.cpp +++ b/src/analyze.cpp @@ -9396,6 +9396,9 @@ static void dump_value_indent(ZigValue *val, int indent) { case ZigTypeIdUnreachable: fprintf(stderr, "<unreachable>\n"); return; + case ZigTypeIdUndefined: + fprintf(stderr, "<undefined>\n"); + return; case ZigTypeIdVoid: fprintf(stderr, "<{}>\n"); return; @@ -9405,11 +9408,16 @@ static void dump_value_indent(ZigValue *val, int indent) { case ZigTypeIdBool: fprintf(stderr, "<%s>\n", val->data.x_bool ? "true" : "false"); return; - case ZigTypeIdComptimeFloat: case ZigTypeIdComptimeInt: - case ZigTypeIdInt: + case ZigTypeIdInt: { + Buf *tmp_buf = buf_alloc(); + bigint_append_buf(tmp_buf, &val->data.x_bigint, 10); + fprintf(stderr, "<%s>\n", buf_ptr(tmp_buf)); + buf_destroy(tmp_buf); + return; + } + case ZigTypeIdComptimeFloat: case ZigTypeIdFloat: - case ZigTypeIdUndefined: fprintf(stderr, "<TODO dump number>\n"); return; @@ -9458,6 +9466,23 @@ static void dump_value_indent(ZigValue *val, int indent) { fprintf(stderr, "<ref\n"); dump_value_indent(val->data.x_ptr.data.ref.pointee, indent + 1); break; + case ConstPtrSpecialBaseStruct: { + ZigValue *struct_val = val->data.x_ptr.data.base_struct.struct_val; + size_t field_index = val->data.x_ptr.data.base_struct.field_index; + fprintf(stderr, "<struct %p field %zu\n", struct_val, field_index); + if (struct_val != nullptr) { + ZigValue *field_val = struct_val->data.x_struct.fields[field_index]; + if (field_val != nullptr) { + dump_value_indent(field_val, indent + 1); + } else { + for (int i = 0; i < indent; i += 1) { + fprintf(stderr, " "); + } + fprintf(stderr, "(invalid null field)\n"); + } + } + break; + } default: fprintf(stderr, "TODO dump more pointer things\n"); } |
