| author | |
| committer | |
| log | fbf8b16ae61ae81ca14027973f3f9366b39a2389 |
| tree | c30bf2207be569563331dd676a41c6298188c595 |
| parent | 51ebebcea36bcc960e8f0f7ef17d795eb46ce1ce |
7 files changed, 63 insertions(+), 63 deletions(-)
lib/std/zig.zig+6-8| ... | @@ -530,18 +530,16 @@ test isUnderscore { | ... | @@ -530,18 +530,16 @@ test isUnderscore { |
| 530 | try std.testing.expect(!isUnderscore("\\x5f")); | 530 | try std.testing.expect(!isUnderscore("\\x5f")); |
| 531 | } | 531 | } |
| 532 | 532 | ||
| 533 | pub fn readSourceFileToEndAlloc(gpa: Allocator, input: std.fs.File, size_hint: usize) ![:0]u8 { | 533 | pub fn readSourceFileToEndAlloc(gpa: Allocator, file_reader: *std.fs.File.Reader) ![:0]u8 { |
| 534 | var buffer: std.ArrayListAlignedUnmanaged(u8, .@"2") = .empty; | 534 | var buffer: std.ArrayListAlignedUnmanaged(u8, .@"2") = .empty; |
| 535 | defer buffer.deinit(gpa); | 535 | defer buffer.deinit(gpa); |
| 536 | 536 | ||
| 537 | try buffer.ensureUnusedCapacity(gpa, size_hint); | 537 | if (file_reader.getSize()) |size| { |
| 538 | const casted_size = std.math.cast(u32, size) orelse return error.StreamTooLong; | ||
| 539 | try buffer.ensureTotalCapacityPrecise(gpa, casted_size); | ||
| 540 | } else |_| {} | ||
| 538 | 541 | ||
| 539 | input.readIntoArrayList(gpa, .limited(max_src_size), .@"2", &buffer) catch |err| switch (err) { | 542 | try file_reader.interface.appendRemaining(gpa, .@"2", &buffer, .limited(max_src_size)); |
| 540 | error.ConnectionResetByPeer => unreachable, | ||
| 541 | error.ConnectionTimedOut => unreachable, | ||
| 542 | error.NotOpenForReading => unreachable, | ||
| 543 | else => |e| return e, | ||
| 544 | }; | ||
| 545 | 543 | ||
| 546 | // Detect unsupported file types with their Byte Order Mark | 544 | // Detect unsupported file types with their Byte Order Mark |
| 547 | const unsupported_boms = [_][]const u8{ | 545 | const unsupported_boms = [_][]const u8{ |
lib/std/zig/Ast.zig+2-2| ... | @@ -207,7 +207,7 @@ pub fn renderAlloc(tree: Ast, gpa: Allocator) error{OutOfMemory}![]u8 { | ... | @@ -207,7 +207,7 @@ pub fn renderAlloc(tree: Ast, gpa: Allocator) error{OutOfMemory}![]u8 { |
| 207 | var aw: std.io.Writer.Allocating = .init(gpa); | 207 | var aw: std.io.Writer.Allocating = .init(gpa); |
| 208 | defer aw.deinit(); | 208 | defer aw.deinit(); |
| 209 | render(tree, gpa, &aw.writer, .{}) catch |err| switch (err) { | 209 | render(tree, gpa, &aw.writer, .{}) catch |err| switch (err) { |
| 210 | error.WriteFailed => return error.OutOfMemory, | 210 | error.WriteFailed, error.OutOfMemory => return error.OutOfMemory, |
| 211 | }; | 211 | }; |
| 212 | return aw.toOwnedSlice(); | 212 | return aw.toOwnedSlice(); |
| 213 | } | 213 | } |
| ... | @@ -215,7 +215,7 @@ pub fn renderAlloc(tree: Ast, gpa: Allocator) error{OutOfMemory}![]u8 { | ... | @@ -215,7 +215,7 @@ pub fn renderAlloc(tree: Ast, gpa: Allocator) error{OutOfMemory}![]u8 { |
| 215 | pub const Render = @import("Ast/Render.zig"); | 215 | pub const Render = @import("Ast/Render.zig"); |
| 216 | 216 | ||
| 217 | pub fn render(tree: Ast, gpa: Allocator, w: *Writer, fixups: Render.Fixups) Render.Error!void { | 217 | pub fn render(tree: Ast, gpa: Allocator, w: *Writer, fixups: Render.Fixups) Render.Error!void { |
| 218 | return Render.tree(gpa, w, tree, fixups); | 218 | return Render.renderTree(gpa, w, tree, fixups); |
| 219 | } | 219 | } |
| 220 | 220 | ||
| 221 | /// Returns an extra offset for column and byte offset of errors that | 221 | /// Returns an extra offset for column and byte offset of errors that |
lib/std/zig/Ast/Render.zig+16-16| ... | @@ -2399,24 +2399,24 @@ fn renderAsmLegacy( | ... | @@ -2399,24 +2399,24 @@ fn renderAsmLegacy( |
| 2399 | try renderToken(r, first_clobber - 2, .none); | 2399 | try renderToken(r, first_clobber - 2, .none); |
| 2400 | try renderToken(r, first_clobber - 1, .space); | 2400 | try renderToken(r, first_clobber - 1, .space); |
| 2401 | 2401 | ||
| 2402 | try ais.writer().writeAll(".{ "); | 2402 | try ais.writeAll(".{ "); |
| 2403 | 2403 | ||
| 2404 | var tok_i = first_clobber; | 2404 | var tok_i = first_clobber; |
| 2405 | while (true) : (tok_i += 1) { | 2405 | while (true) : (tok_i += 1) { |
| 2406 | try ais.writer().writeByte('.'); | 2406 | try ais.writeByte('.'); |
| 2407 | _ = try writeStringLiteralAsIdentifier(r, tok_i); | 2407 | _ = try writeStringLiteralAsIdentifier(r, tok_i); |
| 2408 | try ais.writer().writeAll(" = true"); | 2408 | try ais.writeAll(" = true"); |
| 2409 | 2409 | ||
| 2410 | tok_i += 1; | 2410 | tok_i += 1; |
| 2411 | switch (tree.tokenTag(tok_i)) { | 2411 | switch (tree.tokenTag(tok_i)) { |
| 2412 | .r_paren => { | 2412 | .r_paren => { |
| 2413 | try ais.writer().writeAll(" }"); | 2413 | try ais.writeAll(" }"); |
| 2414 | ais.popIndent(); | 2414 | ais.popIndent(); |
| 2415 | return renderToken(r, tok_i, space); | 2415 | return renderToken(r, tok_i, space); |
| 2416 | }, | 2416 | }, |
| 2417 | .comma => { | 2417 | .comma => { |
| 2418 | if (tree.tokenTag(tok_i + 1) == .r_paren) { | 2418 | if (tree.tokenTag(tok_i + 1) == .r_paren) { |
| 2419 | try ais.writer().writeAll(" }"); | 2419 | try ais.writeAll(" }"); |
| 2420 | ais.popIndent(); | 2420 | ais.popIndent(); |
| 2421 | return renderToken(r, tok_i + 1, space); | 2421 | return renderToken(r, tok_i + 1, space); |
| 2422 | } else { | 2422 | } else { |
| ... | @@ -2511,16 +2511,16 @@ fn renderAsmLegacy( | ... | @@ -2511,16 +2511,16 @@ fn renderAsmLegacy( |
| 2511 | }; | 2511 | }; |
| 2512 | 2512 | ||
| 2513 | try renderToken(r, colon3, .space); // : | 2513 | try renderToken(r, colon3, .space); // : |
| 2514 | try ais.writer().writeAll(".{ "); | 2514 | try ais.writeAll(".{ "); |
| 2515 | const first_clobber = asm_node.first_clobber.?; | 2515 | const first_clobber = asm_node.first_clobber.?; |
| 2516 | var tok_i = first_clobber; | 2516 | var tok_i = first_clobber; |
| 2517 | while (true) { | 2517 | while (true) { |
| 2518 | switch (tree.tokenTag(tok_i + 1)) { | 2518 | switch (tree.tokenTag(tok_i + 1)) { |
| 2519 | .r_paren => { | 2519 | .r_paren => { |
| 2520 | ais.setIndentDelta(indent_delta); | 2520 | ais.setIndentDelta(indent_delta); |
| 2521 | try ais.writer().writeByte('.'); | 2521 | try ais.writeByte('.'); |
| 2522 | const lexeme_len = try writeStringLiteralAsIdentifier(r, tok_i); | 2522 | const lexeme_len = try writeStringLiteralAsIdentifier(r, tok_i); |
| 2523 | try ais.writer().writeAll(" = true }"); | 2523 | try ais.writeAll(" = true }"); |
| 2524 | try renderSpace(r, tok_i, lexeme_len, .newline); | 2524 | try renderSpace(r, tok_i, lexeme_len, .newline); |
| 2525 | ais.popIndent(); | 2525 | ais.popIndent(); |
| 2526 | return renderToken(r, tok_i + 1, space); | 2526 | return renderToken(r, tok_i + 1, space); |
| ... | @@ -2529,17 +2529,17 @@ fn renderAsmLegacy( | ... | @@ -2529,17 +2529,17 @@ fn renderAsmLegacy( |
| 2529 | switch (tree.tokenTag(tok_i + 2)) { | 2529 | switch (tree.tokenTag(tok_i + 2)) { |
| 2530 | .r_paren => { | 2530 | .r_paren => { |
| 2531 | ais.setIndentDelta(indent_delta); | 2531 | ais.setIndentDelta(indent_delta); |
| 2532 | try ais.writer().writeByte('.'); | 2532 | try ais.writeByte('.'); |
| 2533 | const lexeme_len = try writeStringLiteralAsIdentifier(r, tok_i); | 2533 | const lexeme_len = try writeStringLiteralAsIdentifier(r, tok_i); |
| 2534 | try ais.writer().writeAll(" = true }"); | 2534 | try ais.writeAll(" = true }"); |
| 2535 | try renderSpace(r, tok_i, lexeme_len, .newline); | 2535 | try renderSpace(r, tok_i, lexeme_len, .newline); |
| 2536 | ais.popIndent(); | 2536 | ais.popIndent(); |
| 2537 | return renderToken(r, tok_i + 2, space); | 2537 | return renderToken(r, tok_i + 2, space); |
| 2538 | }, | 2538 | }, |
| 2539 | else => { | 2539 | else => { |
| 2540 | try ais.writer().writeByte('.'); | 2540 | try ais.writeByte('.'); |
| 2541 | _ = try writeStringLiteralAsIdentifier(r, tok_i); | 2541 | _ = try writeStringLiteralAsIdentifier(r, tok_i); |
| 2542 | try ais.writer().writeAll(" = true"); | 2542 | try ais.writeAll(" = true"); |
| 2543 | try renderToken(r, tok_i + 1, .space); | 2543 | try renderToken(r, tok_i + 1, .space); |
| 2544 | tok_i += 2; | 2544 | tok_i += 2; |
| 2545 | }, | 2545 | }, |
| ... | @@ -2827,7 +2827,7 @@ fn renderSpace(r: *Render, token_index: Ast.TokenIndex, lexeme_len: usize, space | ... | @@ -2827,7 +2827,7 @@ fn renderSpace(r: *Render, token_index: Ast.TokenIndex, lexeme_len: usize, space |
| 2827 | if (space == .skip) return; | 2827 | if (space == .skip) return; |
| 2828 | 2828 | ||
| 2829 | if (space == .comma and next_token_tag != .comma) { | 2829 | if (space == .comma and next_token_tag != .comma) { |
| 2830 | try ais.underlying_writer.writeByte(','); | 2830 | try ais.writeByte(','); |
| 2831 | } | 2831 | } |
| 2832 | if (space == .semicolon or space == .comma) ais.enableSpaceMode(space); | 2832 | if (space == .semicolon or space == .comma) ais.enableSpaceMode(space); |
| 2833 | defer ais.disableSpaceMode(); | 2833 | defer ais.disableSpaceMode(); |
| ... | @@ -3242,11 +3242,11 @@ fn writeStringLiteralAsIdentifier(r: *Render, token_index: Ast.TokenIndex) !usiz | ... | @@ -3242,11 +3242,11 @@ fn writeStringLiteralAsIdentifier(r: *Render, token_index: Ast.TokenIndex) !usiz |
| 3242 | const lexeme = tokenSliceForRender(tree, token_index); | 3242 | const lexeme = tokenSliceForRender(tree, token_index); |
| 3243 | const unquoted = lexeme[1..][0 .. lexeme.len - 2]; | 3243 | const unquoted = lexeme[1..][0 .. lexeme.len - 2]; |
| 3244 | if (std.zig.isValidId(unquoted)) { | 3244 | if (std.zig.isValidId(unquoted)) { |
| 3245 | try ais.writer().writeAll(unquoted); | 3245 | try ais.writeAll(unquoted); |
| 3246 | return unquoted.len; | 3246 | return unquoted.len; |
| 3247 | } else { | 3247 | } else { |
| 3248 | try ais.writer().writeByte('@'); | 3248 | try ais.writeByte('@'); |
| 3249 | try ais.writer().writeAll(lexeme); | 3249 | try ais.writeAll(lexeme); |
| 3250 | return lexeme.len + 1; | 3250 | return lexeme.len + 1; |
| 3251 | } | 3251 | } |
| 3252 | } | 3252 | } |
lib/std/zig/Server.zig+18-16| ... | @@ -1,4 +1,19 @@ | ... | @@ -1,4 +1,19 @@ |
| 1 | in: *std.io.Reader, | 1 | const Server = @This(); |
| 2 | |||
| 3 | const builtin = @import("builtin"); | ||
| 4 | |||
| 5 | const std = @import("std"); | ||
| 6 | const Allocator = std.mem.Allocator; | ||
| 7 | const assert = std.debug.assert; | ||
| 8 | const native_endian = builtin.target.cpu.arch.endian(); | ||
| 9 | const need_bswap = native_endian != .little; | ||
| 10 | const Cache = std.Build.Cache; | ||
| 11 | const OutMessage = std.zig.Server.Message; | ||
| 12 | const InMessage = std.zig.Client.Message; | ||
| 13 | const Reader = std.Io.Reader; | ||
| 14 | const Writer = std.Io.Writer; | ||
| 15 | |||
| 16 | in: *Reader, | ||
| 2 | out: *Writer, | 17 | out: *Writer, |
| 3 | 18 | ||
| 4 | pub const Message = struct { | 19 | pub const Message = struct { |
| ... | @@ -93,7 +108,7 @@ pub const Message = struct { | ... | @@ -93,7 +108,7 @@ pub const Message = struct { |
| 93 | }; | 108 | }; |
| 94 | 109 | ||
| 95 | pub const Options = struct { | 110 | pub const Options = struct { |
| 96 | in: *std.io.Reader, | 111 | in: *Reader, |
| 97 | out: *Writer, | 112 | out: *Writer, |
| 98 | zig_version: []const u8, | 113 | zig_version: []const u8, |
| 99 | }; | 114 | }; |
| ... | @@ -108,7 +123,7 @@ pub fn init(options: Options) !Server { | ... | @@ -108,7 +123,7 @@ pub fn init(options: Options) !Server { |
| 108 | } | 123 | } |
| 109 | 124 | ||
| 110 | pub fn receiveMessage(s: *Server) !InMessage.Header { | 125 | pub fn receiveMessage(s: *Server) !InMessage.Header { |
| 111 | return try s.in.takeStructEndian(InMessage.Header, .little); | 126 | return s.in.takeStruct(InMessage.Header, .little); |
| 112 | } | 127 | } |
| 113 | 128 | ||
| 114 | pub fn receiveBody_u32(s: *Server) !u32 { | 129 | pub fn receiveBody_u32(s: *Server) !u32 { |
| ... | @@ -203,16 +218,3 @@ pub fn serveTestMetadata(s: *Server, test_metadata: TestMetadata) !void { | ... | @@ -203,16 +218,3 @@ pub fn serveTestMetadata(s: *Server, test_metadata: TestMetadata) !void { |
| 203 | try s.out.writeAll(test_metadata.string_bytes); | 218 | try s.out.writeAll(test_metadata.string_bytes); |
| 204 | try s.out.flush(); | 219 | try s.out.flush(); |
| 205 | } | 220 | } |
| 206 | |||
| 207 | const OutMessage = std.zig.Server.Message; | ||
| 208 | const InMessage = std.zig.Client.Message; | ||
| 209 | |||
| 210 | const Server = @This(); | ||
| 211 | const builtin = @import("builtin"); | ||
| 212 | const std = @import("std"); | ||
| 213 | const Allocator = std.mem.Allocator; | ||
| 214 | const assert = std.debug.assert; | ||
| 215 | const native_endian = builtin.target.cpu.arch.endian(); | ||
| 216 | const need_bswap = native_endian != .little; | ||
| 217 | const Cache = std.Build.Cache; | ||
| 218 | const Writer = std.io.Writer; |
lib/std/zig/llvm/BitcodeReader.zig+9-9| ... | @@ -1,6 +1,11 @@ | ... | @@ -1,6 +1,11 @@ |
| 1 | const BitcodeReader = @This(); | ||
| 2 | |||
| 3 | const std = @import("../../std.zig"); | ||
| 4 | const assert = std.debug.assert; | ||
| 5 | |||
| 1 | allocator: std.mem.Allocator, | 6 | allocator: std.mem.Allocator, |
| 2 | record_arena: std.heap.ArenaAllocator.State, | 7 | record_arena: std.heap.ArenaAllocator.State, |
| 3 | reader: *std.io.Reader, | 8 | reader: *std.Io.Reader, |
| 4 | keep_names: bool, | 9 | keep_names: bool, |
| 5 | bit_buffer: u32, | 10 | bit_buffer: u32, |
| 6 | bit_offset: u5, | 11 | bit_offset: u5, |
| ... | @@ -93,7 +98,7 @@ pub const Record = struct { | ... | @@ -93,7 +98,7 @@ pub const Record = struct { |
| 93 | }; | 98 | }; |
| 94 | 99 | ||
| 95 | pub const InitOptions = struct { | 100 | pub const InitOptions = struct { |
| 96 | reader: *std.io.Reader, | 101 | reader: *std.Io.Reader, |
| 97 | keep_names: bool = false, | 102 | keep_names: bool = false, |
| 98 | }; | 103 | }; |
| 99 | pub fn init(allocator: std.mem.Allocator, options: InitOptions) BitcodeReader { | 104 | pub fn init(allocator: std.mem.Allocator, options: InitOptions) BitcodeReader { |
| ... | @@ -376,12 +381,12 @@ fn read32Bits(bc: *BitcodeReader) !u32 { | ... | @@ -376,12 +381,12 @@ fn read32Bits(bc: *BitcodeReader) !u32 { |
| 376 | 381 | ||
| 377 | fn readBytes(bc: *BitcodeReader, bytes: []u8) !void { | 382 | fn readBytes(bc: *BitcodeReader, bytes: []u8) !void { |
| 378 | assert(bc.bit_offset == 0); | 383 | assert(bc.bit_offset == 0); |
| 379 | try bc.reader.read(bytes); | 384 | try bc.reader.readSliceAll(bytes); |
| 380 | 385 | ||
| 381 | const trailing_bytes = bytes.len % 4; | 386 | const trailing_bytes = bytes.len % 4; |
| 382 | if (trailing_bytes > 0) { | 387 | if (trailing_bytes > 0) { |
| 383 | var bit_buffer: [4]u8 = @splat(0); | 388 | var bit_buffer: [4]u8 = @splat(0); |
| 384 | try bc.reader.read(bit_buffer[trailing_bytes..]); | 389 | try bc.reader.readSliceAll(bit_buffer[trailing_bytes..]); |
| 385 | bc.bit_buffer = std.mem.readInt(u32, &bit_buffer, .little); | 390 | bc.bit_buffer = std.mem.readInt(u32, &bit_buffer, .little); |
| 386 | bc.bit_offset = @intCast(8 * trailing_bytes); | 391 | bc.bit_offset = @intCast(8 * trailing_bytes); |
| 387 | } | 392 | } |
| ... | @@ -508,8 +513,3 @@ const Abbrev = struct { | ... | @@ -508,8 +513,3 @@ const Abbrev = struct { |
| 508 | } | 513 | } |
| 509 | }; | 514 | }; |
| 510 | }; | 515 | }; |
| 511 | |||
| 512 | const assert = std.debug.assert; | ||
| 513 | const std = @import("../../std.zig"); | ||
| 514 | |||
| 515 | const BitcodeReader = @This(); |
lib/std/zig/parser_test.zig+10-9| ... | @@ -6367,31 +6367,32 @@ test "ampersand" { | ... | @@ -6367,31 +6367,32 @@ test "ampersand" { |
| 6367 | var fixed_buffer_mem: [100 * 1024]u8 = undefined; | 6367 | var fixed_buffer_mem: [100 * 1024]u8 = undefined; |
| 6368 | 6368 | ||
| 6369 | fn testParse(source: [:0]const u8, allocator: mem.Allocator, anything_changed: *bool) ![]u8 { | 6369 | fn testParse(source: [:0]const u8, allocator: mem.Allocator, anything_changed: *bool) ![]u8 { |
| 6370 | const stderr: std.fs.File = .stderr(); | 6370 | var buffer: [64]u8 = undefined; |
| 6371 | const stderr_writer = stderr.writer().unbuffered(); | 6371 | const stderr = std.debug.lockStderrWriter(&buffer); |
| 6372 | defer std.debug.unlockStderrWriter(); | ||
| 6372 | 6373 | ||
| 6373 | var tree = try std.zig.Ast.parse(allocator, source, .zig); | 6374 | var tree = try std.zig.Ast.parse(allocator, source, .zig); |
| 6374 | defer tree.deinit(allocator); | 6375 | defer tree.deinit(allocator); |
| 6375 | 6376 | ||
| 6376 | for (tree.errors) |parse_error| { | 6377 | for (tree.errors) |parse_error| { |
| 6377 | const loc = tree.tokenLocation(0, parse_error.token); | 6378 | const loc = tree.tokenLocation(0, parse_error.token); |
| 6378 | try stderr_writer.print("(memory buffer):{d}:{d}: error: ", .{ loc.line + 1, loc.column + 1 }); | 6379 | try stderr.print("(memory buffer):{d}:{d}: error: ", .{ loc.line + 1, loc.column + 1 }); |
| 6379 | try tree.renderError(parse_error, stderr_writer); | 6380 | try tree.renderError(parse_error, stderr); |
| 6380 | try stderr_writer.print("\n{s}\n", .{source[loc.line_start..loc.line_end]}); | 6381 | try stderr.print("\n{s}\n", .{source[loc.line_start..loc.line_end]}); |
| 6381 | { | 6382 | { |
| 6382 | var i: usize = 0; | 6383 | var i: usize = 0; |
| 6383 | while (i < loc.column) : (i += 1) { | 6384 | while (i < loc.column) : (i += 1) { |
| 6384 | try stderr_writer.writeAll(" "); | 6385 | try stderr.writeAll(" "); |
| 6385 | } | 6386 | } |
| 6386 | try stderr_writer.writeAll("^"); | 6387 | try stderr.writeAll("^"); |
| 6387 | } | 6388 | } |
| 6388 | try stderr_writer.writeAll("\n"); | 6389 | try stderr.writeAll("\n"); |
| 6389 | } | 6390 | } |
| 6390 | if (tree.errors.len != 0) { | 6391 | if (tree.errors.len != 0) { |
| 6391 | return error.ParseError; | 6392 | return error.ParseError; |
| 6392 | } | 6393 | } |
| 6393 | 6394 | ||
| 6394 | const formatted = try tree.render(allocator); | 6395 | const formatted = try tree.renderAlloc(allocator); |
| 6395 | anything_changed.* = !mem.eql(u8, formatted, source); | 6396 | anything_changed.* = !mem.eql(u8, formatted, source); |
| 6396 | return formatted; | 6397 | return formatted; |
| 6397 | } | 6398 | } |
lib/std/zig/system/linux.zig+2-3| ... | @@ -1,7 +1,6 @@ | ... | @@ -1,7 +1,6 @@ |
| 1 | const std = @import("std"); | 1 | const std = @import("std"); |
| 2 | const builtin = @import("builtin"); | 2 | const builtin = @import("builtin"); |
| 3 | const mem = std.mem; | 3 | const mem = std.mem; |
| 4 | const io = std.io; | ||
| 5 | const fs = std.fs; | 4 | const fs = std.fs; |
| 6 | const fmt = std.fmt; | 5 | const fmt = std.fmt; |
| 7 | const testing = std.testing; | 6 | const testing = std.testing; |
| ... | @@ -344,7 +343,7 @@ fn testParser( | ... | @@ -344,7 +343,7 @@ fn testParser( |
| 344 | expected_model: *const Target.Cpu.Model, | 343 | expected_model: *const Target.Cpu.Model, |
| 345 | input: []const u8, | 344 | input: []const u8, |
| 346 | ) !void { | 345 | ) !void { |
| 347 | var r: std.io.Reader = .fixed(input); | 346 | var r: std.Io.Reader = .fixed(input); |
| 348 | const result = try parser.parse(arch, &r); | 347 | const result = try parser.parse(arch, &r); |
| 349 | try testing.expectEqual(expected_model, result.?.model); | 348 | try testing.expectEqual(expected_model, result.?.model); |
| 350 | try testing.expect(expected_model.features.eql(result.?.features)); | 349 | try testing.expect(expected_model.features.eql(result.?.features)); |
| ... | @@ -357,7 +356,7 @@ fn testParser( | ... | @@ -357,7 +356,7 @@ fn testParser( |
| 357 | // When all the lines have been analyzed the finalize method is called. | 356 | // When all the lines have been analyzed the finalize method is called. |
| 358 | fn CpuinfoParser(comptime impl: anytype) type { | 357 | fn CpuinfoParser(comptime impl: anytype) type { |
| 359 | return struct { | 358 | return struct { |
| 360 | fn parse(arch: Target.Cpu.Arch, reader: *std.io.Reader) !?Target.Cpu { | 359 | fn parse(arch: Target.Cpu.Arch, reader: *std.Io.Reader) !?Target.Cpu { |
| 361 | var obj: impl = .{}; | 360 | var obj: impl = .{}; |
| 362 | while (reader.takeDelimiterExclusive('\n')) |line| { | 361 | while (reader.takeDelimiterExclusive('\n')) |line| { |
| 363 | const colon_pos = mem.indexOfScalar(u8, line, ':') orelse continue; | 362 | const colon_pos = mem.indexOfScalar(u8, line, ':') orelse continue; |