diff options
author | 2023-02-23 23:57:19 -0800 | |
---|---|---|
committer | 2023-02-23 23:57:19 -0800 | |
commit | 3f04f8d0a653cf5decef2225c2044742b382718a (patch) | |
tree | 91eb6500834e3157ecb9ab208101aa368a1191c8 /src/string_immutable.zig | |
parent | b5bdde28ed34070cbb1d34d13f414f4c513ee40d (diff) | |
download | bun-3f04f8d0a653cf5decef2225c2044742b382718a.tar.gz bun-3f04f8d0a653cf5decef2225c2044742b382718a.tar.zst bun-3f04f8d0a653cf5decef2225c2044742b382718a.zip |
Upgrade Zig (#2151)
* fixup
* Upgrade Zig
* Remove bad assertion
* strings
* bump
* mode -> optimize
* optimize
* Linux build
* Update bindgen.zig
Diffstat (limited to 'src/string_immutable.zig')
-rw-r--r-- | src/string_immutable.zig | 54 |
1 files changed, 25 insertions, 29 deletions
diff --git a/src/string_immutable.zig b/src/string_immutable.zig index d899ef39d..2f9612c23 100644 --- a/src/string_immutable.zig +++ b/src/string_immutable.zig @@ -27,7 +27,7 @@ pub fn toUTF16Literal(comptime str: []const u8) []const u16 { comptime { comptime var output: [str.len]u16 = undefined; - for (str) |c, i| { + for (str, 0..) |c, i| { output[i] = c; } @@ -41,7 +41,7 @@ pub fn toUTF16Literal(comptime str: []const u8) []const u16 { const OptionalUsize = std.meta.Int(.unsigned, @bitSizeOf(usize) - 1); pub fn indexOfAny(self: string, comptime str: anytype) ?OptionalUsize { - for (self) |c, i| { + for (self, 0..) |c, i| { inline for (str) |a| { if (c == a) { return @intCast(OptionalUsize, i); @@ -52,7 +52,7 @@ pub fn indexOfAny(self: string, comptime str: anytype) ?OptionalUsize { return null; } pub fn indexOfAny16(self: []const u16, comptime str: anytype) ?OptionalUsize { - for (self) |c, i| { + for (self, 0..) |c, i| { inline for (str) |a| { if (c == a) { return @intCast(OptionalUsize, i); @@ -100,7 +100,7 @@ pub inline fn isNPMPackageName(target: string) bool { else => return false, }; var slash_index: usize = 0; - for (target[1..]) |c, i| { + for (target[1..], 0..) |c, i| { switch (c) { // Old packages may have capital letters 'A'...'Z', 'a'...'z', '0'...'9', '$', '-', '_', '.' => {}, @@ -117,12 +117,12 @@ pub inline fn isNPMPackageName(target: string) bool { } pub inline fn indexAny(in: anytype, target: string) ?usize { - for (in) |str, i| if (indexOf(str, target) != null) return i; + for (in, 0..) |str, i| if (indexOf(str, target) != null) return i; return null; } pub inline fn indexAnyComptime(target: string, comptime chars: string) ?usize { - for (target) |parent, i| { + for (target, 0..) |parent, i| { inline for (chars) |char| { if (char == parent) return i; } @@ -371,7 +371,7 @@ pub fn copyLowercase(in: string, out: []u8) string { var out_slice: []u8 = out[0..in.len]; begin: while (out_slice.len > 0) { - for (in_slice) |c, i| { + for (in_slice, 0..) |c, i| { switch (c) { 'A'...'Z' => { // @memcpy(out_slice.ptr, in_slice.ptr, i); @@ -401,7 +401,7 @@ pub fn copyLowercaseIfNeeded(in: string, out: []u8) string { var any = false; begin: while (out_slice.len > 0) { - for (in_slice) |c, i| { + for (in_slice, 0..) |c, i| { switch (c) { 'A'...'Z' => { @memcpy(out_slice.ptr, in_slice.ptr, i); @@ -711,7 +711,7 @@ pub fn eql(self: string, other: anytype) bool { return eql(self, other.*); } - for (self) |c, i| { + for (self, 0..) |c, i| { if (other[i] != c) return false; } return true; @@ -752,7 +752,7 @@ inline fn eqlComptimeCheckLenWithKnownType(comptime Type: type, a: []const Type, const len = comptime b.len; comptime var dword_length = b.len >> 3; - const slice = comptime if (@typeInfo(@TypeOf(b)) != .Pointer) b else std.mem.span(b); + const slice = b; const divisor = comptime @sizeOf(Type); comptime var b_ptr: usize = 0; @@ -794,11 +794,7 @@ inline fn eqlComptimeCheckLenWithKnownType(comptime Type: type, a: []const Type, /// strings.eqlComptime(input, "hello world"); /// strings.eqlComptime(input, "hai"); pub inline fn eqlComptimeCheckLenWithType(comptime Type: type, a: []const Type, comptime b: anytype, comptime check_len: bool) bool { - if (@typeInfo(@TypeOf(b)) != .Pointer) { - return eqlComptimeCheckLenWithKnownType(comptime Type, a, &b, comptime check_len); - } else { - return eqlComptimeCheckLenWithKnownType(comptime Type, a, b, comptime check_len); - } + return eqlComptimeCheckLenWithKnownType(comptime Type, a, if (@typeInfo(@TypeOf(b)) != .Pointer) &b else b, comptime check_len); } pub fn eqlCaseInsensitiveASCII(a: string, comptime b: anytype, comptime check_len: bool) bool { @@ -814,7 +810,7 @@ pub fn eqlCaseInsensitiveASCII(a: string, comptime b: anytype, comptime check_le } // pray to the auto vectorization gods - inline for (b) |c, i| { + inline for (b, 0..) |c, i| { const char = comptime std.ascii.toLower(c); if (char != std.ascii.toLower(a[i])) return false; } @@ -980,7 +976,7 @@ pub fn copyU8IntoU16WithAlignment(comptime alignment: u21, output_: []align(alig return; } - for (input) |c, i| { + for (input, 0..) |c, i| { output[i] = c; } } @@ -1845,7 +1841,7 @@ pub fn escapeHTMLForLatin1Input(allocator: std.mem.Allocator, latin1: []const u8 const Scalar = struct { pub const lengths: [std.math.maxInt(u8)]u4 = brk: { var values: [std.math.maxInt(u8)]u4 = undefined; - for (values) |_, i| { + for (values, 0..) |_, i| { switch (i) { '"' => { values[i] = """.len; @@ -1990,7 +1986,7 @@ pub fn escapeHTMLForLatin1Input(allocator: std.mem.Allocator, latin1: []const u8 const vec_chars = "\"&'<>"; const vecs: [vec_chars.len]AsciiVector = comptime brk: { var _vecs: [vec_chars.len]AsciiVector = undefined; - for (vec_chars) |c, i| { + for (vec_chars, 0..) |c, i| { _vecs[i] = @splat(ascii_vector_size, c); } break :brk _vecs; @@ -2187,7 +2183,7 @@ pub fn escapeHTMLForUTF16Input(allocator: std.mem.Allocator, utf16: []const u16) const Scalar = struct { pub const lengths: [std.math.maxInt(u8)]u4 = brk: { var values: [std.math.maxInt(u8)]u4 = undefined; - for (values) |_, i| { + for (values, 0..) |_, i| { values[i] = switch (i) { '"' => """.len, '&' => "&".len, @@ -2252,7 +2248,7 @@ pub fn escapeHTMLForUTF16Input(allocator: std.mem.Allocator, utf16: []const u16) const vec_chars = "\"&'<>"; const vecs: [vec_chars.len]AsciiU16Vector = brk: { var _vecs: [vec_chars.len]AsciiU16Vector = undefined; - for (vec_chars) |c, i| { + for (vec_chars, 0..) |c, i| { _vecs[i] = @splat(ascii_u16_vector_size, @as(u16, c)); } break :brk _vecs; @@ -3192,7 +3188,7 @@ pub fn indexOfChar(slice: []const u8, char: u8) ?u32 { } } - for (remaining) |c, i| { + for (remaining, 0..) |c, i| { if (c == char) { return @truncate(u32, i + (slice.len - remaining.len)); } @@ -3334,7 +3330,7 @@ pub fn encodeBytesToHex(destination: []u8, source: []const u8) usize { test "decodeHexToBytes" { var buffer = std.mem.zeroes([1024]u8); - for (buffer) |_, i| { + for (buffer, 0..) |_, i| { buffer[i] = @truncate(u8, i % 256); } var written: [2048]u8 = undefined; @@ -3529,7 +3525,7 @@ pub fn @"nextUTF16NonASCIIOr$`\\"( } } - for (remaining) |char, i| { + for (remaining, 0..) |char, i| { switch (char) { '$', '`', '\\', 0...0x20 - 1, 128...std.math.maxInt(u16) => { return @truncate(u32, i + (slice.len - remaining.len)); @@ -3587,27 +3583,27 @@ test "firstNonASCII" { test "firstNonASCII16" { @setEvalBranchQuota(99999); - const yes = std.mem.span(toUTF16Literal("aspdokasdpokasdpokasd aspdokasdpokasdpokasdaspdokasdpokasdpokasdaspdokasdpokasdpokasd123123aspdokasdpokasdpokasdaspdokasdpokasdpokasdaspdokasdpokasdpokasd123123aspdokasdpokasdpokasdaspdokasdpokasdpokasdaspdokasdpokasdpokasd123123aspdokasdpokasdpokasdaspdokasdpokasdpokasdaspdokasdpokasdpokasd123123aspdokasdpokasdpokasdaspdokasdpokasdpokasdaspdokasdpokasdpokasd123123aspdokasdpokasdpokasd aspdokasdpokasdpokasdaspdokasdpokasdpokasdaspdokasdpokasdpokasd123123aspdokasdpokasdpokasdaspdokasdpokasdpokasdaspdokasdpokasdpokasd123123aspdokasdpokasdpokasdaspdokasdpokasdpokasdaspdokasdpokasdpokasd123123aspdokasdpokasdpokasdaspdokasdpokasdpokasdaspdokasdpokasdpokasd123123aspdokasdpokasdpokasdaspdokasdpokasdpokasdaspdokasdpokasdpokasd123123aspdokasdpokasdpokasd aspdokasdpokasdpokasdaspdokasdpokasdpokasdaspdokasdpokasdpokasd123123aspdokasdpokasdpokasdaspdokasdpokasdpokasdaspdokasdpokasdpokasd123123aspdokasdpokasdpokasdaspdokasdpokasdpokasdaspdokasdpokasdpokasd123123aspdokasdpokasdpokasdaspdokasdpokasdpokasdaspdokasdpokasdpokasd123123aspdokasdpokasdpokasdaspdokasdpokasdpokasdaspdokasdpokasdpokasd123123aspdokasdpokasdpokasd aspdokasdpokasdpokasdaspdokasdpokasdpokasdaspdokasdpokasdpokasd123123aspdokasdpokasdpokasdaspdokasdpokasdpokasdaspdokasdpokasdpokasd123123aspdokasdpokasdpokasdaspdokasdpokasdpokasdaspdokasdpokasdpokasd123123aspdokasdpokasdpokasdaspdokasdpokasdpokasdaspdokasdpokasdpokasd123123aspdokasdpokasdpokasdaspdokasdpokasdpokasdaspdokasdpokasdpokasd123123")); + const yes = std.mem.bytesAsSlice(u16, toUTF16Literal("aspdokasdpokasdpokasd aspdokasdpokasdpokasdaspdokasdpokasdpokasdaspdokasdpokasdpokasd123123aspdokasdpokasdpokasdaspdokasdpokasdpokasdaspdokasdpokasdpokasd123123aspdokasdpokasdpokasdaspdokasdpokasdpokasdaspdokasdpokasdpokasd123123aspdokasdpokasdpokasdaspdokasdpokasdpokasdaspdokasdpokasdpokasd123123aspdokasdpokasdpokasdaspdokasdpokasdpokasdaspdokasdpokasdpokasd123123aspdokasdpokasdpokasd aspdokasdpokasdpokasdaspdokasdpokasdpokasdaspdokasdpokasdpokasd123123aspdokasdpokasdpokasdaspdokasdpokasdpokasdaspdokasdpokasdpokasd123123aspdokasdpokasdpokasdaspdokasdpokasdpokasdaspdokasdpokasdpokasd123123aspdokasdpokasdpokasdaspdokasdpokasdpokasdaspdokasdpokasdpokasd123123aspdokasdpokasdpokasdaspdokasdpokasdpokasdaspdokasdpokasdpokasd123123aspdokasdpokasdpokasd aspdokasdpokasdpokasdaspdokasdpokasdpokasdaspdokasdpokasdpokasd123123aspdokasdpokasdpokasdaspdokasdpokasdpokasdaspdokasdpokasdpokasd123123aspdokasdpokasdpokasdaspdokasdpokasdpokasdaspdokasdpokasdpokasd123123aspdokasdpokasdpokasdaspdokasdpokasdpokasdaspdokasdpokasdpokasd123123aspdokasdpokasdpokasdaspdokasdpokasdpokasdaspdokasdpokasdpokasd123123aspdokasdpokasdpokasd aspdokasdpokasdpokasdaspdokasdpokasdpokasdaspdokasdpokasdpokasd123123aspdokasdpokasdpokasdaspdokasdpokasdpokasdaspdokasdpokasdpokasd123123aspdokasdpokasdpokasdaspdokasdpokasdpokasdaspdokasdpokasdpokasd123123aspdokasdpokasdpokasdaspdokasdpokasdpokasdaspdokasdpokasdpokasd123123aspdokasdpokasdpokasdaspdokasdpokasdpokasdaspdokasdpokasdpokasd123123")); try std.testing.expectEqual(true, firstNonASCII16(@TypeOf(yes), yes) == null); { @setEvalBranchQuota(99999); - const no = std.mem.span(toUTF16Literal("aspdokasdpokasdpokasd aspdokasdpokasdpokasdaspdoka🙂sdpokasdpokasdaspdokasdpokasdpokasd123123aspdokasdpokasdpokasdaspdokasdpokasdpokasdaspdokasdpokasdpokasd123123aspdokasdpokasdpokasdaspdokasdpokasdpokasdaspdokasdpokasdpokasd123123aspdokasdpokasdpokasdaspdokasdpokasdpokasdaspdokasdpokasdpokasd123123aspdokasdpokasdpokasdaspdokasdpokasdpokasdaspdokasdpokasdpokasd123123")); + const no = std.mem.bytesAsSlice(u16, toUTF16Literal("aspdokasdpokasdpokasd aspdokasdpokasdpokasdaspdoka🙂sdpokasdpokasdaspdokasdpokasdpokasd123123aspdokasdpokasdpokasdaspdokasdpokasdpokasdaspdokasdpokasdpokasd123123aspdokasdpokasdpokasdaspdokasdpokasdpokasdaspdokasdpokasdpokasd123123aspdokasdpokasdpokasdaspdokasdpokasdpokasdaspdokasdpokasdpokasd123123aspdokasdpokasdpokasdaspdokasdpokasdpokasdaspdokasdpokasdpokasd123123")); try std.testing.expectEqual(@as(u32, 50), firstNonASCII16(@TypeOf(no), no).?); } { @setEvalBranchQuota(99999); - const no = std.mem.span(toUTF16Literal("🙂sdpokasdpokasdaspdokasdpokasdpokasd123123aspdokasdpokasdpokasdaspdokasdpokasdpokasdaspdokasdpokasdpokasd123123aspdokasdpokasdpokasdaspdokasdpokasdpokasdaspdokasdpokasdpokasd123123aspdokasdpokasdpokasdaspdokasdpokasdpokasdaspdokasdpokasdpokasd123123aspdokasdpokasdpokasdaspdokasdpokasdpokasdaspdokasdpokasdpokasd123123")); + const no = std.mem.bytesAsSlice(u16, toUTF16Literal("🙂sdpokasdpokasdaspdokasdpokasdpokasd123123aspdokasdpokasdpokasdaspdokasdpokasdpokasdaspdokasdpokasdpokasd123123aspdokasdpokasdpokasdaspdokasdpokasdpokasdaspdokasdpokasdpokasd123123aspdokasdpokasdpokasdaspdokasdpokasdpokasdaspdokasdpokasdpokasd123123aspdokasdpokasdpokasdaspdokasdpokasdpokasdaspdokasdpokasdpokasd123123")); try std.testing.expectEqual(@as(u32, 0), firstNonASCII16(@TypeOf(no), no).?); } { @setEvalBranchQuota(99999); - const no = std.mem.span(toUTF16Literal("a🙂sdpokasdpokasdaspdokasdpokasdpokasd123123aspdokasdpokasdpokasdaspdokasdpokasdpokasdaspdokasdpokasdpokasd123123aspdokasdpokasdpokasdaspdokasdpokasdpokasdaspdokasdpokasdpokasd123123aspdokasdpokasdpokasdaspdokasdpokasdpokasdaspdokasdpokasdpokasd123123aspdokasdpokasdpokasdaspdokasdpokasdpokasdaspdokasdpokasdpokasd123123")); + const no = std.mem.bytesAsSlice(u16, toUTF16Literal("a🙂sdpokasdpokasdaspdokasdpokasdpokasd123123aspdokasdpokasdpokasdaspdokasdpokasdpokasdaspdokasdpokasdpokasd123123aspdokasdpokasdpokasdaspdokasdpokasdpokasdaspdokasdpokasdpokasd123123aspdokasdpokasdpokasdaspdokasdpokasdpokasdaspdokasdpokasdpokasd123123aspdokasdpokasdpokasdaspdokasdpokasdpokasdaspdokasdpokasdpokasd123123")); try std.testing.expectEqual(@as(u32, 1), firstNonASCII16(@TypeOf(no), no).?); } { @setEvalBranchQuota(99999); - const no = std.mem.span(toUTF16Literal("aspdokasdpokasdpokasd aspdokasdpokasdpokasdaspdokasdpokasdpokasdaspdokasdpokasdpokasd123123aspdokasdpokasdpokasdaspdokasdpokasdpokasdaspdokasdpokasdpokasd123123aspdokasdpokasdpokasdaspdokasdpokasdpokasdaspdokasdpokasdpokasd123123aspdokasdpokasdpokasdaspdokasdpokasdpokasdaspdokasdpokasdpokasd123123aspdokasdpokasdpokasdaspdokasdpokasdpokasdaspdokasdpokasdpokasd12312🙂3")); + const no = std.mem.bytesAsSlice(u16, toUTF16Literal("aspdokasdpokasdpokasd aspdokasdpokasdpokasdaspdokasdpokasdpokasdaspdokasdpokasdpokasd123123aspdokasdpokasdpokasdaspdokasdpokasdpokasdaspdokasdpokasdpokasd123123aspdokasdpokasdpokasdaspdokasdpokasdpokasdaspdokasdpokasdpokasd123123aspdokasdpokasdpokasdaspdokasdpokasdpokasdaspdokasdpokasdpokasd123123aspdokasdpokasdpokasdaspdokasdpokasdpokasdaspdokasdpokasdpokasd12312🙂3")); try std.testing.expectEqual(@as(u32, 366), firstNonASCII16(@TypeOf(no), no).?); } } |