Commit 4f510dba10

Andrew Kelley <andrew@ziglang.org>
2025-08-28 00:17:55
behavior tests: remove "variadic functions" dependency on std lib
1 parent ea34712
Changed files (1)
test
behavior
test/behavior/var_args.zig
@@ -200,35 +200,42 @@ test "variadic functions" {
     if (builtin.cpu.arch.isSPARC() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest; // https://github.com/ziglang/zig/issues/23718
 
     const S = struct {
-        fn printf(list_ptr: *std.array_list.Managed(u8), format: [*:0]const u8, ...) callconv(.c) void {
+        fn printf(buffer: [*]u8, format: [*:0]const u8, ...) callconv(.c) void {
             var ap = @cVaStart();
             defer @cVaEnd(&ap);
-            vprintf(list_ptr, format, &ap);
+            vprintf(buffer, format, &ap);
         }
 
-        fn vprintf(
-            list: *std.array_list.Managed(u8),
-            format: [*:0]const u8,
-            ap: *std.builtin.VaList,
-        ) callconv(.c) void {
-            for (std.mem.span(format)) |c| switch (c) {
+        fn vprintf(buffer: [*]u8, format: [*:0]const u8, ap: *std.builtin.VaList) callconv(.c) void {
+            var i: usize = 0;
+            for (format[0..3]) |byte| switch (byte) {
                 's' => {
                     const arg = @cVaArg(ap, [*:0]const u8);
-                    list.writer().print("{s}", .{arg}) catch return;
+                    buffer[i..][0..5].* = arg[0..5].*;
+                    i += 5;
                 },
                 'd' => {
                     const arg = @cVaArg(ap, c_int);
-                    list.writer().print("{d}", .{arg}) catch return;
+                    switch (arg) {
+                        1 => {
+                            buffer[i] = '1';
+                            i += 1;
+                        },
+                        5 => {
+                            buffer[i] = '5';
+                            i += 1;
+                        },
+                        else => unreachable,
+                    }
                 },
                 else => unreachable,
             };
         }
     };
 
-    var list = std.array_list.Managed(u8).init(std.testing.allocator);
-    defer list.deinit();
-    S.printf(&list, "dsd", @as(c_int, 1), @as([*:0]const u8, "hello"), @as(c_int, 5));
-    try std.testing.expectEqualStrings("1hello5", list.items);
+    var buffer: [7]u8 = undefined;
+    S.printf(&buffer, "dsd", @as(c_int, 1), @as([*:0]const u8, "hello"), @as(c_int, 5));
+    try expect(std.mem.eql(u8, &buffer, "1hello5"));
 }
 
 test "copy VaList" {