diff --git a/doc/docgen.zig b/doc/docgen.zig index 75c80cc528..a0e1b39bf6 100644 --- a/doc/docgen.zig +++ b/doc/docgen.zig @@ -284,6 +284,7 @@ const Code = struct { TestSafety: []const u8, Exe: ExpectedOutcome, Obj: ?[]const u8, + Lib, }; }; @@ -484,6 +485,8 @@ fn genToc(allocator: *mem.Allocator, tokenizer: *Tokenizer) !Toc { } else if (mem.eql(u8, code_kind_str, "obj_err")) { code_kind_id = Code.Id{ .Obj = name }; name = "test"; + } else if (mem.eql(u8, code_kind_str, "lib")) { + code_kind_id = Code.Id.Lib; } else if (mem.eql(u8, code_kind_str, "syntax")) { code_kind_id = Code.Id{ .Obj = null }; is_inline = true; @@ -1402,6 +1405,42 @@ fn genHtml(allocator: *mem.Allocator, tokenizer: *Tokenizer, toc: *Toc, out: var try out.print("\n"); } }, + Code.Id.Lib => { + var test_args = std.ArrayList([]const u8).init(allocator); + defer test_args.deinit(); + + try test_args.appendSlice([][]const u8{ + zig_exe, + "build-lib", + tmp_source_file_name, + "--output-dir", + tmp_dir_name, + }); + try out.print("
$ zig build-lib {}.zig", code.name);
+ switch (code.mode) {
+ builtin.Mode.Debug => {},
+ builtin.Mode.ReleaseSafe => {
+ try test_args.append("--release-safe");
+ try out.print(" --release-safe");
+ },
+ builtin.Mode.ReleaseFast => {
+ try test_args.append("--release-fast");
+ try out.print(" --release-fast");
+ },
+ builtin.Mode.ReleaseSmall => {
+ try test_args.append("--release-small");
+ try out.print(" --release-small");
+ },
+ }
+ if (code.target_str) |triple| {
+ try test_args.appendSlice([][]const u8{ "-target", triple });
+ try out.print(" -target {}", triple);
+ }
+ const result = exec(allocator, &env_map, test_args.toSliceConst()) catch return parseError(tokenizer, code.source_token, "test failed");
+ const escaped_stderr = try escapeHtml(allocator, result.stderr);
+ const escaped_stdout = try escapeHtml(allocator, result.stdout);
+ try out.print("\n{}{}\n", escaped_stderr, escaped_stdout);
+ },
}
warn("OK\n");
},
diff --git a/doc/langref.html.in b/doc/langref.html.in
index 807fe7d6db..e5212afb9d 100644
--- a/doc/langref.html.in
+++ b/doc/langref.html.in
@@ -8960,7 +8960,7 @@ all your base are belong to us
{#header_close#}
{#header_open|WebAssembly#}
{#header_open|Freestanding#}
- {#code_begin|exe|wasm#}
+ {#code_begin|lib|wasm#}
{#target_wasm#}
extern fn print(i32) void;