1#update=initial version
2#file=main.zig
3const S = struct { x: u8 };
4pub fn main(init: std.process.Init) !void {
5 var stdout_writer = std.Io.File.stdout().writerStreaming(init.io, &.{});
6 printFieldCount(&stdout_writer.interface) catch |err| switch (err) {
7 error.WriteFailed => return stdout_writer.err.?,
8 };
9 printOneField(&stdout_writer.interface) catch |err| switch (err) {
10 error.WriteFailed => return stdout_writer.err.?,
11 };
12}
13fn printFieldCount(w: *Writer) Writer.Error!void {
14 try w.print("{d} ", .{@typeInfo(S).@"struct".field_names.len});
15}
16fn printOneField(w: *Writer) Writer.Error!void {
17 const val: S = .{ .x = 100 };
18 try w.print("{d}\n", .{val.x});
19}
20const std = @import("std");
21const Writer = std.Io.Writer;
22#expect_stdout="1 100\n"
23
24#update=add a field
25#file=main.zig
26const S = struct { x: u8, y: u16 = 200 };
27pub fn main(init: std.process.Init) !void {
28 var stdout_writer = std.Io.File.stdout().writerStreaming(init.io, &.{});
29 printFieldCount(&stdout_writer.interface) catch |err| switch (err) {
30 error.WriteFailed => return stdout_writer.err.?,
31 };
32 printOneField(&stdout_writer.interface) catch |err| switch (err) {
33 error.WriteFailed => return stdout_writer.err.?,
34 };
35}
36fn printFieldCount(w: *Writer) Writer.Error!void {
37 try w.print("{d} ", .{@typeInfo(S).@"struct".field_names.len});
38}
39fn printOneField(w: *Writer) Writer.Error!void {
40 const val: S = .{ .x = 100 };
41 try w.print("{d}\n", .{val.x});
42}
43const std = @import("std");
44const Writer = std.Io.Writer;
45#expect_stdout="2 100\n"
46
47#update=remove all fields
48#file=main.zig
49const S = struct {};
50pub fn main(init: std.process.Init) !void {
51 var stdout_writer = std.Io.File.stdout().writerStreaming(init.io, &.{});
52 printFieldCount(&stdout_writer.interface) catch |err| switch (err) {
53 error.WriteFailed => return stdout_writer.err.?,
54 };
55 printOneField(&stdout_writer.interface) catch |err| switch (err) {
56 error.WriteFailed => return stdout_writer.err.?,
57 };
58}
59fn printFieldCount(w: *Writer) Writer.Error!void {
60 try w.print("{d} ", .{@typeInfo(S).@"struct".field_names.len});
61}
62fn printOneField(w: *Writer) Writer.Error!void {
63 const val: S = .{ .x = 100 };
64 try w.print("{d}\n", .{val.x});
65}
66const std = @import("std");
67const Writer = std.Io.Writer;
68#expect_error=main.zig:15:24: error: no field named 'x' in struct 'main.S'
69#expect_error=main.zig:1:11: note: struct declared here
70
71#update=remove reference to non-existent field
72#file=main.zig
73const S = struct {};
74pub fn main(init: std.process.Init) !void {
75 var stdout_writer = std.Io.File.stdout().writerStreaming(init.io, &.{});
76 printFieldCount(&stdout_writer.interface) catch |err| switch (err) {
77 error.WriteFailed => return stdout_writer.err.?,
78 };
79 printOneField(&stdout_writer.interface) catch |err| switch (err) {
80 error.WriteFailed => return stdout_writer.err.?,
81 };
82}
83fn printFieldCount(w: *Writer) Writer.Error!void {
84 try w.print("{d} ", .{@typeInfo(S).@"struct".field_names.len});
85}
86fn printOneField(w: *Writer) Writer.Error!void {
87 //const val: S = .{ .x = 100 };
88 //try w.print("{d}\n", .{val.x});
89 try w.writeAll("<no fields>\n");
90}
91const std = @import("std");
92const Writer = std.Io.Writer;
93#expect_stdout="0 <no fields>\n"