| ... | @@ -306,12 +306,12 @@ pub const Tokenizer = struct { | ... | @@ -306,12 +306,12 @@ pub const Tokenizer = struct { |
| 306 | | 306 | |
| 307 | fn errorPosition(self: *Tokenizer, position: usize, bytes: []const u8, comptime fmt: []const u8, args: var) Error { | 307 | fn errorPosition(self: *Tokenizer, position: usize, bytes: []const u8, comptime fmt: []const u8, args: var) Error { |
| 308 | var buffer = try std.Buffer.initSize(&self.arena.allocator, 0); | 308 | var buffer = try std.Buffer.initSize(&self.arena.allocator, 0); |
| 309 | std.fmt.format(&buffer, anyerror, std.Buffer.append, fmt, args) catch {}; | 309 | try buffer.print(fmt, args); |
| 310 | try buffer.append(" '"); | 310 | try buffer.append(" '"); |
| 311 | var out = makeOutput(std.Buffer.append, &buffer); | 311 | var out = makeOutput(std.Buffer.append, &buffer); |
| 312 | try printCharValues(&out, bytes); | 312 | try printCharValues(&out, bytes); |
| 313 | try buffer.append("'"); | 313 | try buffer.append("'"); |
| 314 | std.fmt.format(&buffer, anyerror, std.Buffer.append, " at position {}", .{position - (bytes.len - 1)}) catch {}; | 314 | try buffer.print(" at position {}", .{position - (bytes.len - 1)}); |
| 315 | self.error_text = buffer.toSlice(); | 315 | self.error_text = buffer.toSlice(); |
| 316 | return Error.InvalidInput; | 316 | return Error.InvalidInput; |
| 317 | } | 317 | } |
| ... | @@ -319,10 +319,9 @@ pub const Tokenizer = struct { | ... | @@ -319,10 +319,9 @@ pub const Tokenizer = struct { |
| 319 | fn errorIllegalChar(self: *Tokenizer, position: usize, char: u8, comptime fmt: []const u8, args: var) Error { | 319 | fn errorIllegalChar(self: *Tokenizer, position: usize, char: u8, comptime fmt: []const u8, args: var) Error { |
| 320 | var buffer = try std.Buffer.initSize(&self.arena.allocator, 0); | 320 | var buffer = try std.Buffer.initSize(&self.arena.allocator, 0); |
| 321 | try buffer.append("illegal char "); | 321 | try buffer.append("illegal char "); |
| 322 | var out = makeOutput(std.Buffer.append, &buffer); | 322 | try printUnderstandableChar(&buffer, char); |
| 323 | try printUnderstandableChar(&out, char); | 323 | try buffer.print(" at position {}", .{position}); |
| 324 | std.fmt.format(&buffer, anyerror, std.Buffer.append, " at position {}", .{position}) catch {}; | 324 | if (fmt.len != 0) try buffer.print(": " ++ fmt, args); |
| 325 | if (fmt.len != 0) std.fmt.format(&buffer, anyerror, std.Buffer.append, ": " ++ fmt, args) catch {}; | | |
| 326 | self.error_text = buffer.toSlice(); | 325 | self.error_text = buffer.toSlice(); |
| 327 | return Error.InvalidInput; | 326 | return Error.InvalidInput; |
| 328 | } | 327 | } |
| ... | @@ -980,13 +979,13 @@ fn hexDump16(out: var, offset: usize, bytes: []const u8) !void { | ... | @@ -980,13 +979,13 @@ fn hexDump16(out: var, offset: usize, bytes: []const u8) !void { |
| 980 | | 979 | |
| 981 | fn printDecValue(out: var, value: u64, width: u8) !void { | 980 | fn printDecValue(out: var, value: u64, width: u8) !void { |
| 982 | var buffer: [20]u8 = undefined; | 981 | var buffer: [20]u8 = undefined; |
| 983 | const len = std.fmt.formatIntBuf(buffer[0..], value, 10, false, width); | 982 | const len = std.fmtstream.formatIntBuf(buffer[0..], value, 10, false, width); |
| 984 | try out.write(buffer[0..len]); | 983 | try out.write(buffer[0..len]); |
| 985 | } | 984 | } |
| 986 | | 985 | |
| 987 | fn printHexValue(out: var, value: u64, width: u8) !void { | 986 | fn printHexValue(out: var, value: u64, width: u8) !void { |
| 988 | var buffer: [16]u8 = undefined; | 987 | var buffer: [16]u8 = undefined; |
| 989 | const len = std.fmt.formatIntBuf(buffer[0..], value, 16, false, width); | 988 | const len = std.fmtstream.formatIntBuf(buffer[0..], value, 16, false, width); |
| 990 | try out.write(buffer[0..len]); | 989 | try out.write(buffer[0..len]); |
| 991 | } | 990 | } |
| 992 | | 991 | |
| ... | @@ -996,14 +995,13 @@ fn printCharValues(out: var, bytes: []const u8) !void { | ... | @@ -996,14 +995,13 @@ fn printCharValues(out: var, bytes: []const u8) !void { |
| 996 | } | 995 | } |
| 997 | } | 996 | } |
| 998 | | 997 | |
| 999 | fn printUnderstandableChar(out: var, char: u8) !void { | 998 | fn printUnderstandableChar(buffer: *std.Buffer, char: u8) !void { |
| 1000 | if (!std.ascii.isPrint(char) or char == ' ') { | 999 | if (!std.ascii.isPrint(char) or char == ' ') { |
| 1001 | const output = @typeInfo(@TypeOf(out)).Pointer.child.output; | 1000 | try buffer.print("\\x{X:2}", .{char}); |
| 1002 | std.fmt.format(out.context, anyerror, output, "\\x{X:2}", .{char}) catch {}; | | |
| 1003 | } else { | 1001 | } else { |
| 1004 | try out.write("'"); | 1002 | try buffer.append("'"); |
| 1005 | try out.write(&[_]u8{printable_char_tab[char]}); | 1003 | try buffer.appendByte(printable_char_tab[char]); |
| 1006 | try out.write("'"); | 1004 | try buffer.append("'"); |
| 1007 | } | 1005 | } |
| 1008 | } | 1006 | } |
| 1009 | | 1007 | |