aboutsummaryrefslogtreecommitdiff
path: root/src/analyze.cpp
diff options
context:
space:
mode:
authorAndrew Kelley <andrew@ziglang.org>2020-01-13 16:51:58 -0500
committerAndrew Kelley <andrew@ziglang.org>2020-01-16 21:58:52 -0500
commit8bf425957b253d0ab2e4902d57340b19b7436698 (patch)
tree3a62b6c16a64313195c5b01154bf8ee631aec97f /src/analyze.cpp
parente48157c3cb817ff1551f74fc1da9f420e38ccbd5 (diff)
downloadzig-8bf425957b253d0ab2e4902d57340b19b7436698.tar.gz
zig-8bf425957b253d0ab2e4902d57340b19b7436698.zip
fix regressions double implicit casting return ptr
Diffstat (limited to 'src/analyze.cpp')
-rw-r--r--src/analyze.cpp31
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");
}