| ... | ... | @@ -1,5 +1,5 @@ |
| 1 | | const builtin = @import("builtin"); |
| 2 | 1 | const std = @import("std"); |
| 2 | const builtin = std.builtin; |
| 3 | 3 | const io = std.io; |
| 4 | 4 | const fs = std.fs; |
| 5 | 5 | const process = std.process; |
| ... | ... | @@ -521,7 +521,7 @@ fn genToc(allocator: *mem.Allocator, tokenizer: *Tokenizer) !Toc { |
| 521 | 521 | return parseError(tokenizer, code_kind_tok, "unrecognized code kind: {}", .{code_kind_str}); |
| 522 | 522 | } |
| 523 | 523 | |
| 524 | | var mode = builtin.Mode.Debug; |
| 524 | var mode: builtin.Mode = .Debug; |
| 525 | 525 | var link_objects = std.ArrayList([]const u8).init(allocator); |
| 526 | 526 | defer link_objects.deinit(); |
| 527 | 527 | var target_str: ?[]const u8 = null; |
| ... | ... | @@ -533,9 +533,9 @@ fn genToc(allocator: *mem.Allocator, tokenizer: *Tokenizer) !Toc { |
| 533 | 533 | const end_code_tag = try eatToken(tokenizer, Token.Id.TagContent); |
| 534 | 534 | const end_tag_name = tokenizer.buffer[end_code_tag.start..end_code_tag.end]; |
| 535 | 535 | if (mem.eql(u8, end_tag_name, "code_release_fast")) { |
| 536 | | mode = builtin.Mode.ReleaseFast; |
| 536 | mode = .ReleaseFast; |
| 537 | 537 | } else if (mem.eql(u8, end_tag_name, "code_release_safe")) { |
| 538 | | mode = builtin.Mode.ReleaseSafe; |
| 538 | mode = .ReleaseSafe; |
| 539 | 539 | } else if (mem.eql(u8, end_tag_name, "code_link_object")) { |
| 540 | 540 | _ = try eatToken(tokenizer, Token.Id.Separator); |
| 541 | 541 | const obj_tok = try eatToken(tokenizer, Token.Id.TagContent); |
| ... | ... | @@ -1001,30 +1001,30 @@ fn genHtml(allocator: *mem.Allocator, tokenizer: *Tokenizer, toc: *Toc, out: var |
| 1001 | 1001 | |
| 1002 | 1002 | for (toc.nodes) |node| { |
| 1003 | 1003 | switch (node) { |
| 1004 | | Node.Content => |data| { |
| 1004 | .Content => |data| { |
| 1005 | 1005 | try out.write(data); |
| 1006 | 1006 | }, |
| 1007 | | Node.Link => |info| { |
| 1007 | .Link => |info| { |
| 1008 | 1008 | if (!toc.urls.contains(info.url)) { |
| 1009 | 1009 | return parseError(tokenizer, info.token, "url not found: {}", .{info.url}); |
| 1010 | 1010 | } |
| 1011 | 1011 | try out.print("<a href=\"#{}\">{}</a>", .{ info.url, info.name }); |
| 1012 | 1012 | }, |
| 1013 | | Node.Nav => { |
| 1013 | .Nav => { |
| 1014 | 1014 | try out.write(toc.toc); |
| 1015 | 1015 | }, |
| 1016 | | Node.Builtin => |tok| { |
| 1016 | .Builtin => |tok| { |
| 1017 | 1017 | try out.write("<pre>"); |
| 1018 | 1018 | try tokenizeAndPrintRaw(tokenizer, out, tok, builtin_code); |
| 1019 | 1019 | try out.write("</pre>"); |
| 1020 | 1020 | }, |
| 1021 | | Node.HeaderOpen => |info| { |
| 1021 | .HeaderOpen => |info| { |
| 1022 | 1022 | try out.print( |
| 1023 | 1023 | "<h{} id=\"{}\"><a href=\"#toc-{}\">{}</a> <a class=\"hdr\" href=\"#{}\">§</a></h{}>\n", |
| 1024 | 1024 | .{ info.n, info.url, info.url, info.name, info.url, info.n }, |
| 1025 | 1025 | ); |
| 1026 | 1026 | }, |
| 1027 | | Node.SeeAlso => |items| { |
| 1027 | .SeeAlso => |items| { |
| 1028 | 1028 | try out.write("<p>See also:</p><ul>\n"); |
| 1029 | 1029 | for (items) |item| { |
| 1030 | 1030 | const url = try urlize(allocator, item.name); |
| ... | ... | @@ -1035,10 +1035,10 @@ fn genHtml(allocator: *mem.Allocator, tokenizer: *Tokenizer, toc: *Toc, out: var |
| 1035 | 1035 | } |
| 1036 | 1036 | try out.write("</ul>\n"); |
| 1037 | 1037 | }, |
| 1038 | | Node.Syntax => |content_tok| { |
| 1038 | .Syntax => |content_tok| { |
| 1039 | 1039 | try tokenizeAndPrint(tokenizer, out, content_tok); |
| 1040 | 1040 | }, |
| 1041 | | Node.Code => |code| { |
| 1041 | .Code => |code| { |
| 1042 | 1042 | code_progress_index += 1; |
| 1043 | 1043 | warn("docgen example code {}/{}...", .{ code_progress_index, tokenizer.code_node_count }); |
| 1044 | 1044 | |
| ... | ... | @@ -1075,16 +1075,16 @@ fn genHtml(allocator: *mem.Allocator, tokenizer: *Tokenizer, toc: *Toc, out: var |
| 1075 | 1075 | }); |
| 1076 | 1076 | try out.print("<pre><code class=\"shell\">$ zig build-exe {}.zig", .{code.name}); |
| 1077 | 1077 | switch (code.mode) { |
| 1078 | | builtin.Mode.Debug => {}, |
| 1079 | | builtin.Mode.ReleaseSafe => { |
| 1078 | .Debug => {}, |
| 1079 | .ReleaseSafe => { |
| 1080 | 1080 | try build_args.append("--release-safe"); |
| 1081 | 1081 | try out.print(" --release-safe", .{}); |
| 1082 | 1082 | }, |
| 1083 | | builtin.Mode.ReleaseFast => { |
| 1083 | .ReleaseFast => { |
| 1084 | 1084 | try build_args.append("--release-fast"); |
| 1085 | 1085 | try out.print(" --release-fast", .{}); |
| 1086 | 1086 | }, |
| 1087 | | builtin.Mode.ReleaseSmall => { |
| 1087 | .ReleaseSmall => { |
| 1088 | 1088 | try build_args.append("--release-small"); |
| 1089 | 1089 | try out.print(" --release-small", .{}); |
| 1090 | 1090 | }, |
| ... | ... | @@ -1142,13 +1142,14 @@ fn genHtml(allocator: *mem.Allocator, tokenizer: *Tokenizer, toc: *Toc, out: var |
| 1142 | 1142 | try out.print("\n{}</code></pre>\n", .{colored_stderr}); |
| 1143 | 1143 | break :code_block; |
| 1144 | 1144 | } |
| 1145 | | const exec_result = exec(allocator, &env_map, build_args.toSliceConst()) catch return parseError(tokenizer, code.source_token, "example failed to compile", .{}); |
| 1145 | const exec_result = exec(allocator, &env_map, build_args.toSliceConst()) catch |
| 1146 | return parseError(tokenizer, code.source_token, "example failed to compile", .{}); |
| 1146 | 1147 | |
| 1147 | 1148 | if (code.target_str) |triple| { |
| 1148 | | if (mem.startsWith(u8, triple, "wasm32") or |
| 1149 | if ((mem.startsWith(u8, triple, "wasm32") or |
| 1149 | 1150 | mem.startsWith(u8, triple, "riscv64-linux") or |
| 1150 | | mem.startsWith(u8, triple, "x86_64-linux") and |
| 1151 | | (builtin.os != .linux or builtin.arch != .x86_64)) |
| 1151 | mem.startsWith(u8, triple, "x86_64-linux")) and |
| 1152 | (std.Target.current.os.tag != .linux or std.Target.current.cpu.arch != .x86_64)) |
| 1152 | 1153 | { |
| 1153 | 1154 | // skip execution |
| 1154 | 1155 | try out.print("</code></pre>\n", .{}); |
| ... | ... | @@ -1207,16 +1208,16 @@ fn genHtml(allocator: *mem.Allocator, tokenizer: *Tokenizer, toc: *Toc, out: var |
| 1207 | 1208 | }); |
| 1208 | 1209 | try out.print("<pre><code class=\"shell\">$ zig test {}.zig", .{code.name}); |
| 1209 | 1210 | switch (code.mode) { |
| 1210 | | builtin.Mode.Debug => {}, |
| 1211 | | builtin.Mode.ReleaseSafe => { |
| 1211 | .Debug => {}, |
| 1212 | .ReleaseSafe => { |
| 1212 | 1213 | try test_args.append("--release-safe"); |
| 1213 | 1214 | try out.print(" --release-safe", .{}); |
| 1214 | 1215 | }, |
| 1215 | | builtin.Mode.ReleaseFast => { |
| 1216 | .ReleaseFast => { |
| 1216 | 1217 | try test_args.append("--release-fast"); |
| 1217 | 1218 | try out.print(" --release-fast", .{}); |
| 1218 | 1219 | }, |
| 1219 | | builtin.Mode.ReleaseSmall => { |
| 1220 | .ReleaseSmall => { |
| 1220 | 1221 | try test_args.append("--release-small"); |
| 1221 | 1222 | try out.print(" --release-small", .{}); |
| 1222 | 1223 | }, |
| ... | ... | @@ -1249,16 +1250,16 @@ fn genHtml(allocator: *mem.Allocator, tokenizer: *Tokenizer, toc: *Toc, out: var |
| 1249 | 1250 | }); |
| 1250 | 1251 | try out.print("<pre><code class=\"shell\">$ zig test {}.zig", .{code.name}); |
| 1251 | 1252 | switch (code.mode) { |
| 1252 | | builtin.Mode.Debug => {}, |
| 1253 | | builtin.Mode.ReleaseSafe => { |
| 1253 | .Debug => {}, |
| 1254 | .ReleaseSafe => { |
| 1254 | 1255 | try test_args.append("--release-safe"); |
| 1255 | 1256 | try out.print(" --release-safe", .{}); |
| 1256 | 1257 | }, |
| 1257 | | builtin.Mode.ReleaseFast => { |
| 1258 | .ReleaseFast => { |
| 1258 | 1259 | try test_args.append("--release-fast"); |
| 1259 | 1260 | try out.print(" --release-fast", .{}); |
| 1260 | 1261 | }, |
| 1261 | | builtin.Mode.ReleaseSmall => { |
| 1262 | .ReleaseSmall => { |
| 1262 | 1263 | try test_args.append("--release-small"); |
| 1263 | 1264 | try out.print(" --release-small", .{}); |
| 1264 | 1265 | }, |
| ... | ... | @@ -1306,16 +1307,16 @@ fn genHtml(allocator: *mem.Allocator, tokenizer: *Tokenizer, toc: *Toc, out: var |
| 1306 | 1307 | }); |
| 1307 | 1308 | var mode_arg: []const u8 = ""; |
| 1308 | 1309 | switch (code.mode) { |
| 1309 | | builtin.Mode.Debug => {}, |
| 1310 | | builtin.Mode.ReleaseSafe => { |
| 1310 | .Debug => {}, |
| 1311 | .ReleaseSafe => { |
| 1311 | 1312 | try test_args.append("--release-safe"); |
| 1312 | 1313 | mode_arg = " --release-safe"; |
| 1313 | 1314 | }, |
| 1314 | | builtin.Mode.ReleaseFast => { |
| 1315 | .ReleaseFast => { |
| 1315 | 1316 | try test_args.append("--release-fast"); |
| 1316 | 1317 | mode_arg = " --release-fast"; |
| 1317 | 1318 | }, |
| 1318 | | builtin.Mode.ReleaseSmall => { |
| 1319 | .ReleaseSmall => { |
| 1319 | 1320 | try test_args.append("--release-small"); |
| 1320 | 1321 | mode_arg = " --release-small"; |
| 1321 | 1322 | }, |
| ... | ... | @@ -1386,20 +1387,20 @@ fn genHtml(allocator: *mem.Allocator, tokenizer: *Tokenizer, toc: *Toc, out: var |
| 1386 | 1387 | } |
| 1387 | 1388 | |
| 1388 | 1389 | switch (code.mode) { |
| 1389 | | builtin.Mode.Debug => {}, |
| 1390 | | builtin.Mode.ReleaseSafe => { |
| 1390 | .Debug => {}, |
| 1391 | .ReleaseSafe => { |
| 1391 | 1392 | try build_args.append("--release-safe"); |
| 1392 | 1393 | if (!code.is_inline) { |
| 1393 | 1394 | try out.print(" --release-safe", .{}); |
| 1394 | 1395 | } |
| 1395 | 1396 | }, |
| 1396 | | builtin.Mode.ReleaseFast => { |
| 1397 | .ReleaseFast => { |
| 1397 | 1398 | try build_args.append("--release-fast"); |
| 1398 | 1399 | if (!code.is_inline) { |
| 1399 | 1400 | try out.print(" --release-fast", .{}); |
| 1400 | 1401 | } |
| 1401 | 1402 | }, |
| 1402 | | builtin.Mode.ReleaseSmall => { |
| 1403 | .ReleaseSmall => { |
| 1403 | 1404 | try build_args.append("--release-small"); |
| 1404 | 1405 | if (!code.is_inline) { |
| 1405 | 1406 | try out.print(" --release-small", .{}); |
| ... | ... | @@ -1461,16 +1462,16 @@ fn genHtml(allocator: *mem.Allocator, tokenizer: *Tokenizer, toc: *Toc, out: var |
| 1461 | 1462 | }); |
| 1462 | 1463 | try out.print("<pre><code class=\"shell\">$ zig build-lib {}.zig", .{code.name}); |
| 1463 | 1464 | switch (code.mode) { |
| 1464 | | builtin.Mode.Debug => {}, |
| 1465 | | builtin.Mode.ReleaseSafe => { |
| 1465 | .Debug => {}, |
| 1466 | .ReleaseSafe => { |
| 1466 | 1467 | try test_args.append("--release-safe"); |
| 1467 | 1468 | try out.print(" --release-safe", .{}); |
| 1468 | 1469 | }, |
| 1469 | | builtin.Mode.ReleaseFast => { |
| 1470 | .ReleaseFast => { |
| 1470 | 1471 | try test_args.append("--release-fast"); |
| 1471 | 1472 | try out.print(" --release-fast", .{}); |
| 1472 | 1473 | }, |
| 1473 | | builtin.Mode.ReleaseSmall => { |
| 1474 | .ReleaseSmall => { |
| 1474 | 1475 | try test_args.append("--release-small"); |
| 1475 | 1476 | try out.print(" --release-small", .{}); |
| 1476 | 1477 | }, |