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