aboutsummaryrefslogtreecommitdiff
path: root/src/print_zir.zig
diff options
context:
space:
mode:
authorVeikka Tuominen <git@vexu.eu>2022-11-22 00:23:08 +0200
committerVeikka Tuominen <git@vexu.eu>2022-11-23 12:13:39 +0200
commit80575face7a3b1e0f47e413507a6fa8b1d002e57 (patch)
tree312aa0ddf6dc53634f626adda28d8fbbfd82ab81 /src/print_zir.zig
parent6fb689e97a4ec05fd97dfa05cc203e9bcb7cffa1 (diff)
downloadzig-80575face7a3b1e0f47e413507a6fa8b1d002e57.tar.gz
zig-80575face7a3b1e0f47e413507a6fa8b1d002e57.zip
AstGen: implement tuple declarations
Diffstat (limited to 'src/print_zir.zig')
-rw-r--r--src/print_zir.zig19
1 files changed, 13 insertions, 6 deletions
diff --git a/src/print_zir.zig b/src/print_zir.zig
index d434abd439..9135c22010 100644
--- a/src/print_zir.zig
+++ b/src/print_zir.zig
@@ -1262,6 +1262,7 @@ const Writer = struct {
try self.writeFlag(stream, "known_non_opv, ", small.known_non_opv);
try self.writeFlag(stream, "known_comptime_only, ", small.known_comptime_only);
+ try self.writeFlag(stream, "tuple, ", small.is_tuple);
try stream.print("{s}, ", .{@tagName(small.name_strategy)});
@@ -1335,8 +1336,11 @@ const Writer = struct {
const has_type_body = @truncate(u1, cur_bit_bag) != 0;
cur_bit_bag >>= 1;
- const field_name = self.code.extra[extra_index];
- extra_index += 1;
+ var field_name: u32 = 0;
+ if (!small.is_tuple) {
+ field_name = self.code.extra[extra_index];
+ extra_index += 1;
+ }
const doc_comment_index = self.code.extra[extra_index];
extra_index += 1;
@@ -1370,13 +1374,16 @@ const Writer = struct {
try stream.writeAll("{\n");
self.indent += 2;
- for (fields) |field| {
- const field_name = self.code.nullTerminatedString(field.name);
-
+ for (fields) |field, i| {
try self.writeDocComment(stream, field.doc_comment_index);
try stream.writeByteNTimes(' ', self.indent);
try self.writeFlag(stream, "comptime ", field.is_comptime);
- try stream.print("{}: ", .{std.zig.fmtId(field_name)});
+ if (field.name != 0) {
+ const field_name = self.code.nullTerminatedString(field.name);
+ try stream.print("{}: ", .{std.zig.fmtId(field_name)});
+ } else {
+ try stream.print("@\"{d}\": ", .{i});
+ }
if (field.field_type != .none) {
try self.writeInstRef(stream, field.field_type);
}