From 56a905c7d16c79138b4581a84f1f844bce2f00eb Mon Sep 17 00:00:00 2001 From: Shritesh Bhattarai Date: Thu, 16 May 2019 13:54:05 -0500 Subject: [PATCH] docgen: add lib codeblock type and use it for wasm32-freestanding --- doc/docgen.zig | 39 +++++++++++++++++++++++++++++++++++++++ doc/langref.html.in | 2 +- 2 files changed, 40 insertions(+), 1 deletion(-) 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;