mirror of
https://github.com/oven-sh/bun
synced 2026-02-09 10:28:47 +00:00
fix %i formatter with missing argument (#10910)
This commit is contained in:
@@ -1245,7 +1245,6 @@ pub const Formatter = struct {
|
||||
var slice = slice_;
|
||||
var i: u32 = 0;
|
||||
var len: u32 = @as(u32, @truncate(slice.len));
|
||||
var any_non_ascii = false;
|
||||
var hit_percent = false;
|
||||
while (i < len) : (i += 1) {
|
||||
if (hit_percent) {
|
||||
@@ -1259,6 +1258,9 @@ pub const Formatter = struct {
|
||||
if (i >= len)
|
||||
break;
|
||||
|
||||
if (this.remaining_values.len == 0)
|
||||
break;
|
||||
|
||||
const token: PercentTag = switch (slice[i]) {
|
||||
's' => .s,
|
||||
'f' => .f,
|
||||
@@ -1266,16 +1268,21 @@ pub const Formatter = struct {
|
||||
'O' => .O,
|
||||
'd', 'i' => .i,
|
||||
'c' => .c,
|
||||
'%' => {
|
||||
// print up to and including the first %
|
||||
const end = slice[0..i];
|
||||
writer.writeAll(end);
|
||||
// then skip the second % so we dont hit it again
|
||||
slice = slice[@min(slice.len, i + 1)..];
|
||||
i = 0;
|
||||
continue;
|
||||
},
|
||||
else => continue,
|
||||
};
|
||||
|
||||
// Flush everything up to the %
|
||||
const end = slice[0 .. i - 1];
|
||||
if (!any_non_ascii)
|
||||
writer.writeAll(end)
|
||||
else
|
||||
writer.writeAll(end);
|
||||
any_non_ascii = false;
|
||||
writer.writeAll(end);
|
||||
slice = slice[@min(slice.len, i + 1)..];
|
||||
i = 0;
|
||||
hit_percent = true;
|
||||
@@ -1422,15 +1429,6 @@ pub const Formatter = struct {
|
||||
}
|
||||
if (this.remaining_values.len == 0) break;
|
||||
},
|
||||
'\\' => {
|
||||
i += 1;
|
||||
if (i >= len)
|
||||
break;
|
||||
if (slice[i] == '%') i += 2;
|
||||
},
|
||||
128...255 => {
|
||||
any_non_ascii = true;
|
||||
},
|
||||
else => {},
|
||||
}
|
||||
}
|
||||
|
||||
@@ -279,3 +279,8 @@ custom inspect
|
||||
0.30000000000000004
|
||||
Hello World 123
|
||||
Hello %vWorld 123
|
||||
Hello NaN %i
|
||||
Hello NaN % 1
|
||||
Hello NaN %j 1
|
||||
Hello \5 6,
|
||||
Hello %i 5 6
|
||||
|
||||
@@ -255,3 +255,9 @@ console.log("%f", 0.30000000000000004);
|
||||
|
||||
console.log("Hello %cWorld", "color: red", 123);
|
||||
console.log("Hello %vWorld", 123);
|
||||
|
||||
console.log("Hello %i %i", [1, 2, 3, 4]);
|
||||
console.log("Hello %i %", [1, 2, 3, 4], 1);
|
||||
console.log("Hello %i %j", [1, 2, 3, 4], 1);
|
||||
console.log("Hello \\%i %i,", 5, 6);
|
||||
console.log("Hello %%i %i", 5, 6);
|
||||
|
||||
Reference in New Issue
Block a user