diff options
author | 2022-05-05 21:32:19 -0700 | |
---|---|---|
committer | 2022-05-05 21:32:19 -0700 | |
commit | d629cfafd6fd148c985b5cd051cc5ec48395dc16 (patch) | |
tree | 39a11fb60f61a19802a477a4e690e0f11594c885 /src/json_parser.zig | |
parent | 7b125c9731815452c62fbfb69b241dc9e4eb7c29 (diff) | |
download | bun-d629cfafd6fd148c985b5cd051cc5ec48395dc16.tar.gz bun-d629cfafd6fd148c985b5cd051cc5ec48395dc16.tar.zst bun-d629cfafd6fd148c985b5cd051cc5ec48395dc16.zip |
E.String gets a Rope
Diffstat (limited to 'src/json_parser.zig')
-rw-r--r-- | src/json_parser.zig | 25 |
1 files changed, 11 insertions, 14 deletions
diff --git a/src/json_parser.zig b/src/json_parser.zig index e6292488f..4bc442a5e 100644 --- a/src/json_parser.zig +++ b/src/json_parser.zig @@ -167,10 +167,7 @@ fn JSONLikeParser_( .t_string_literal => { var str: E.String = p.lexer.toEString(); if (comptime force_utf8) { - if (str.value.len > 0) { - str.utf8 = p.lexer.utf16ToString(str.value); - str.value = &[_]u16{}; - } + str.toUTF8(p.allocator) catch unreachable; } try p.lexer.next(); @@ -469,21 +466,21 @@ pub const PackageJSONVersionChecker = struct { // if you have multiple "name" fields in the package.json.... // first one wins if (key.data == .e_string and value.data == .e_string) { - if (!p.has_found_name and strings.eqlComptime(key.data.e_string.utf8, "name")) { + if (!p.has_found_name and strings.eqlComptime(key.data.e_string.data, "name")) { const len = @minimum( - value.data.e_string.utf8.len, + value.data.e_string.data.len, p.found_name_buf.len, ); - std.mem.copy(u8, &p.found_name_buf, value.data.e_string.utf8[0..len]); + std.mem.copy(u8, &p.found_name_buf, value.data.e_string.data[0..len]); p.found_name = p.found_name_buf[0..len]; p.has_found_name = true; - } else if (!p.has_found_version and strings.eqlComptime(key.data.e_string.utf8, "version")) { + } else if (!p.has_found_version and strings.eqlComptime(key.data.e_string.data, "version")) { const len = @minimum( - value.data.e_string.utf8.len, + value.data.e_string.data.len, p.found_version_buf.len, ); - std.mem.copy(u8, &p.found_version_buf, value.data.e_string.utf8[0..len]); + std.mem.copy(u8, &p.found_version_buf, value.data.e_string.data[0..len]); p.found_version = p.found_version_buf[0..len]; p.has_found_version = true; } @@ -570,7 +567,7 @@ pub fn toAST( }, .Slice => { if (ptr_info.child == u8) { - return Expr.init(js_ast.E.String, js_ast.E.String{ .utf8 = value }, logger.Loc.Empty); + return Expr.init(js_ast.E.String, js_ast.E.String.init(value), logger.Loc.Empty); } var exprs = try allocator.alloc(Expr, value.len); @@ -584,7 +581,7 @@ pub fn toAST( }, .Array => |Array| { if (Array.child == u8) { - return Expr.init(js_ast.E.String, js_ast.E.String{ .utf8 = value }, logger.Loc.Empty); + return Expr.init(js_ast.E.String, js_ast.E.String.init(value), logger.Loc.Empty); } var exprs = try allocator.alloc(Expr, value.len); @@ -600,7 +597,7 @@ pub fn toAST( var property_i: usize = 0; inline for (fields) |field| { properties[property_i] = G.Property{ - .key = Expr.init(E.String, E.String{ .utf8 = field.name }, logger.Loc.Empty), + .key = Expr.init(E.String, E.String{ .data = field.name }, logger.Loc.Empty), .value = try toAST(allocator, field.field_type, @field(value, field.name)), }; property_i += 1; @@ -697,7 +694,7 @@ const JSONParserForMacro = JSONLikeParser( var empty_object = E.Object{}; var empty_array = E.Array{}; -var empty_string = E.String{ .utf8 = "" }; +var empty_string = E.String{}; var empty_string_data = Expr.Data{ .e_string = &empty_string }; var empty_object_data = Expr.Data{ .e_object = &empty_object }; var empty_array_data = Expr.Data{ .e_array = &empty_array }; |