aboutsummaryrefslogtreecommitdiff
path: root/src/json_parser.zig
diff options
context:
space:
mode:
authorGravatar Jarred Sumner <jarred@jarredsumner.com> 2022-03-04 00:20:22 -0800
committerGravatar Jarred Sumner <jarred@jarredsumner.com> 2022-03-04 00:20:22 -0800
commit51fbbea1d3dc2b610fe5fe525229e56b581e5c8a (patch)
treec75e063c4eb7c99737fbf7a5a2014f9546e2e218 /src/json_parser.zig
parent696710fd7aedee6054947aab002aaa853e9ee731 (diff)
downloadbun-jarred/upgrade-zig-2.tar.gz
bun-jarred/upgrade-zig-2.tar.zst
bun-jarred/upgrade-zig-2.zip
Diffstat (limited to 'src/json_parser.zig')
-rw-r--r--src/json_parser.zig47
1 files changed, 42 insertions, 5 deletions
diff --git a/src/json_parser.zig b/src/json_parser.zig
index c2236228f..c17f5b177 100644
--- a/src/json_parser.zig
+++ b/src/json_parser.zig
@@ -84,7 +84,37 @@ const HashMapPool = struct {
}
};
+// This hack fixes using LLDB
fn JSONLikeParser(opts: js_lexer.JSONOptions) type {
+ return JSONLikeParser_(
+ opts.is_json,
+ opts.allow_comments,
+ opts.allow_trailing_commas,
+ opts.ignore_leading_escape_sequences,
+ opts.ignore_trailing_escape_sequences,
+ opts.json_warn_duplicate_keys,
+ opts.was_originally_macro,
+ );
+}
+
+fn JSONLikeParser_(
+ opts_is_json: bool,
+ opts_allow_comments: bool,
+ opts_allow_trailing_commas: bool,
+ opts_ignore_leading_escape_sequences: bool,
+ opts_ignore_trailing_escape_sequences: bool,
+ opts_json_warn_duplicate_keys: bool,
+ opts_was_originally_macro: bool,
+) type {
+ const opts = js_lexer.JSONOptions{
+ .is_json = opts_is_json,
+ .allow_comments = opts_allow_comments,
+ .allow_trailing_commas = opts_allow_trailing_commas,
+ .ignore_leading_escape_sequences = opts_ignore_leading_escape_sequences,
+ .ignore_trailing_escape_sequences = opts_ignore_trailing_escape_sequences,
+ .json_warn_duplicate_keys = opts_json_warn_duplicate_keys,
+ .was_originally_macro = opts_was_originally_macro,
+ };
return struct {
const Lexer = js_lexer.NewLexer(if (LEXER_DEBUGGER_WORKAROUND) js_lexer.JSONOptions{} else opts);
@@ -228,8 +258,14 @@ fn JSONLikeParser(opts: js_lexer.JSONOptions) type {
}
}
- const str = p.lexer.toEString();
+ const str = if (comptime force_utf8)
+ p.lexer.toUTF8EString()
+ else
+ p.lexer.toEString();
+
const key_range = p.lexer.range();
+ const key = p.e(str, key_range.loc);
+ try p.lexer.expect(.t_string_literal);
if (comptime opts.json_warn_duplicate_keys) {
const hash_key = str.hash();
@@ -242,12 +278,13 @@ fn JSONLikeParser(opts: js_lexer.JSONOptions) type {
}
}
- const key = p.e(str, key_range.loc);
- try p.lexer.expect(.t_string_literal);
-
try p.lexer.expect(.t_colon);
const value = try p.parseExpr(false, force_utf8);
- properties.append(G.Property{ .key = key, .value = value }) catch unreachable;
+ properties.append(G.Property{
+ .key = key,
+ .value = value,
+ .kind = js_ast.G.Property.Kind.normal,
+ }) catch unreachable;
}
if (p.lexer.has_newline_before) {