TypedValue: fix printing some nested things

This commit is contained in:
Andrew Kelley 2024-02-10 23:25:23 -07:00
parent 7680c5330c
commit eda58a2f46

View file

@ -367,18 +367,26 @@ pub fn print(
try writer.writeAll(".?"); try writer.writeAll(".?");
}, },
.elem => |elem| { .elem => |elem| {
if (level == 0) {
try writer.writeAll("(...)");
} else {
try print(.{ try print(.{
.ty = Type.fromInterned(ip.typeOf(elem.base)), .ty = Type.fromInterned(ip.typeOf(elem.base)),
.val = Value.fromInterned(elem.base), .val = Value.fromInterned(elem.base),
}, writer, level - 1, mod); }, writer, level - 1, mod);
}
try writer.print("[{}]", .{elem.index}); try writer.print("[{}]", .{elem.index});
}, },
.field => |field| { .field => |field| {
const ptr_container_ty = Type.fromInterned(ip.typeOf(field.base)); const ptr_container_ty = Type.fromInterned(ip.typeOf(field.base));
if (level == 0) {
try writer.writeAll("(...)");
} else {
try print(.{ try print(.{
.ty = ptr_container_ty, .ty = ptr_container_ty,
.val = Value.fromInterned(field.base), .val = Value.fromInterned(field.base),
}, writer, level - 1, mod); }, writer, level - 1, mod);
}
const container_ty = ptr_container_ty.childType(mod); const container_ty = ptr_container_ty.childType(mod);
switch (container_ty.zigTypeTag(mod)) { switch (container_ty.zigTypeTag(mod)) {