#zig build-exe {
--name test
-Mroot=test.zig
#}

#write test.zig {
const std = @import("std");
pub fn main() !void {
    try std.Io.File.stdout().writeStreamingAll(io, foo);
}
const foo = "good morning\n";
const io = std.Io.Threaded.global_single_threaded.io();
#}
#update
#check stdout {
good morning
#}

#write test.zig {
const std = @import("std");
pub fn main() !void {
    try std.Io.File.stdout().writeStreamingAll(io, foo);
}
const foo = "good morning\n";
const bar = "good evening\n";
const io = std.Io.Threaded.global_single_threaded.io();
#}
#update "add new declaration"
#check stdout {
good morning
#}

#write test.zig {
const std = @import("std");
pub fn main() !void {
    try std.Io.File.stdout().writeStreamingAll(io, bar);
}
const foo = "good morning\n";
const bar = "good evening\n";
const io = std.Io.Threaded.global_single_threaded.io();
#}
#update "reference new declaration"
#check stdout {
good evening
#}

#write test.zig {
const std = @import("std");
pub fn main() !void {
    try std.Io.File.stdout().writeStreamingAll(io, qux);
}
const foo = "good morning\n";
const bar = "good evening\n";
const io = std.Io.Threaded.global_single_threaded.io();
#}
#update "reference missing declaration"
#check errors {
test.zig:3:52: error: use of undeclared identifier 'qux'
#}

#write test.zig {
const std = @import("std");
pub fn main() !void {
    try std.Io.File.stdout().writeStreamingAll(io, qux);
}
const foo = "good morning\n";
const bar = "good evening\n";
const qux = "good night\n";
const io = std.Io.Threaded.global_single_threaded.io();
#}
#update "add missing declaration"
#check stdout {
good night
#}

#write test.zig {
const std = @import("std");
pub fn main() !void {
    try std.Io.File.stdout().writeStreamingAll(io, qux);
}
const qux = "good night\n";
const io = std.Io.Threaded.global_single_threaded.io();
#}
#update "remove unused declarations"
#check stdout {
good night
#}
