| author | |
| committer | |
| log | 682fccaaf0413f4daba43b6990494866bd7b9afd |
| tree | 141ddbb1f0fb0ceb928a78a002eccdc7fc2e535c |
| parent | 27c1e0b453d50f8c242fd1153290a00b74dff018 |
| parent | 86ef3202dd5f4198411b39abdbea293832ebaad9 |
closes #50113 files changed, 38 insertions(+), 23 deletions(-)
lib/std/target.zig+32| ... | ... | @@ -101,6 +101,38 @@ pub const Target = struct { |
| 101 | 101 | return @enumToInt(ver) >= @enumToInt(self.min) and @enumToInt(ver) <= @enumToInt(self.max); |
| 102 | 102 | } |
| 103 | 103 | }; |
| 104 | ||
| 105 | /// This function is defined to serialize a Zig source code representation of this | |
| 106 | /// type, that, when parsed, will deserialize into the same data. | |
| 107 | pub fn format( | |
| 108 | self: WindowsVersion, | |
| 109 | comptime fmt: []const u8, | |
| 110 | options: std.fmt.FormatOptions, | |
| 111 | out_stream: var, | |
| 112 | ) !void { | |
| 113 | if (fmt.len > 0 and fmt[0] == 's') { | |
| 114 | if ( | |
| 115 | @enumToInt(self) >= @enumToInt(WindowsVersion.nt4) and @enumToInt(self) <= @enumToInt(WindowsVersion.win10_19h1) | |
| 116 | ) { | |
| 117 | try std.fmt.format(out_stream, ".{}", .{@tagName(self)}); | |
| 118 | } else { | |
| 119 | try std.fmt.format(out_stream, | |
| 120 | "@intToEnum(Target.Os.WindowsVersion, {})", | |
| 121 | .{ @enumToInt(self) } | |
| 122 | ); | |
| 123 | } | |
| 124 | } else { | |
| 125 | if ( | |
| 126 | @enumToInt(self) >= @enumToInt(WindowsVersion.nt4) and @enumToInt(self) <= @enumToInt(WindowsVersion.win10_19h1) | |
| 127 | ) { | |
| 128 | try std.fmt.format(out_stream, "WindowsVersion.{}", .{@tagName(self)}); | |
| 129 | } else { | |
| 130 | try std.fmt.format(out_stream, "WindowsVersion(", .{@typeName(@This())}); | |
| 131 | try std.fmt.format(out_stream, "{}", .{@enumToInt(self)}); | |
| 132 | try out_stream.writeAll(")"); | |
| 133 | } | |
| 134 | } | |
| 135 | } | |
| 104 | 136 | }; |
| 105 | 137 | |
| 106 | 138 | pub const LinuxVersionRange = struct { |
lib/std/zig/cross_target.zig+2-2| ... | ... | @@ -514,14 +514,14 @@ pub const CrossTarget = struct { |
| 514 | 514 | switch (self.getOsVersionMin()) { |
| 515 | 515 | .none => {}, |
| 516 | 516 | .semver => |v| try result.outStream().print(".{}", .{v}), |
| 517 | .windows => |v| try result.outStream().print(".{}", .{@tagName(v)}), | |
| 517 | .windows => |v| try result.outStream().print("{s}", .{v}), | |
| 518 | 518 | } |
| 519 | 519 | } |
| 520 | 520 | if (self.os_version_max) |max| { |
| 521 | 521 | switch (max) { |
| 522 | 522 | .none => {}, |
| 523 | 523 | .semver => |v| try result.outStream().print("...{}", .{v}), |
| 524 | .windows => |v| try result.outStream().print("...{}", .{@tagName(v)}), | |
| 524 | .windows => |v| try result.outStream().print("..{s}", .{v}), | |
| 525 | 525 | } |
| 526 | 526 | } |
| 527 | 527 |
src-self-hosted/stage2.zig+4-21| ... | ... | @@ -653,23 +653,6 @@ export fn stage2_libc_render(stage1_libc: *Stage2LibCInstallation, output_file: |
| 653 | 653 | return .None; |
| 654 | 654 | } |
| 655 | 655 | |
| 656 | fn enumToString(value: var, type_name: []const u8) ![]const u8 { | |
| 657 | switch (@typeInfo(@TypeOf(value))) { | |
| 658 | .Enum => |e| { | |
| 659 | if (e.is_exhaustive) { | |
| 660 | return std.fmt.allocPrint(std.heap.c_allocator, ".{}", .{@tagName(value)}); | |
| 661 | } else { | |
| 662 | return std.fmt.allocPrint( | |
| 663 | std.heap.c_allocator, | |
| 664 | "@intToEnum({}, {})", | |
| 665 | .{ type_name, @enumToInt(value) }, | |
| 666 | ); | |
| 667 | } | |
| 668 | }, | |
| 669 | else => unreachable, | |
| 670 | } | |
| 671 | } | |
| 672 | ||
| 673 | 656 | // ABI warning |
| 674 | 657 | const Stage2Target = extern struct { |
| 675 | 658 | arch: c_int, |
| ... | ... | @@ -887,13 +870,13 @@ const Stage2Target = extern struct { |
| 887 | 870 | |
| 888 | 871 | .windows => try os_builtin_str_buffer.outStream().print( |
| 889 | 872 | \\ .windows = .{{ |
| 890 | \\ .min = {}, | |
| 891 | \\ .max = {}, | |
| 873 | \\ .min = {s}, | |
| 874 | \\ .max = {s}, | |
| 892 | 875 | \\ }}}}, |
| 893 | 876 | \\ |
| 894 | 877 | , .{ |
| 895 | try enumToString(target.os.version_range.windows.min, "Target.Os.WindowsVersion"), | |
| 896 | try enumToString(target.os.version_range.windows.max, "Target.Os.WindowsVersion"), | |
| 878 | target.os.version_range.windows.min, | |
| 879 | target.os.version_range.windows.max, | |
| 897 | 880 | }), |
| 898 | 881 | } |
| 899 | 882 | try os_builtin_str_buffer.appendSlice("};\n"); |