diff options
author | 2021-04-28 21:58:02 -0700 | |
---|---|---|
committer | 2021-04-28 21:58:02 -0700 | |
commit | cabe773a4f0a12e411f9f3c9698da6bbd90ec474 (patch) | |
tree | c20cfd9ba22c4ca999c850edb04012d94d72ccb5 /src/json_parser.zig | |
parent | 435a6e9b187168d869024d1002951e4bfa76333a (diff) | |
download | bun-cabe773a4f0a12e411f9f3c9698da6bbd90ec474.tar.gz bun-cabe773a4f0a12e411f9f3c9698da6bbd90ec474.tar.zst bun-cabe773a4f0a12e411f9f3c9698da6bbd90ec474.zip |
wip
Former-commit-id: b37acf309c8f42d49dc47eea446f89a3dbe9f6e2
Diffstat (limited to 'src/json_parser.zig')
-rw-r--r-- | src/json_parser.zig | 27 |
1 files changed, 19 insertions, 8 deletions
diff --git a/src/json_parser.zig b/src/json_parser.zig index 8b371d4e2..9c0257899 100644 --- a/src/json_parser.zig +++ b/src/json_parser.zig @@ -36,9 +36,9 @@ const Level = js_ast.Op.Level; const Op = js_ast.Op; const Scope = js_ast.Scope; const locModuleScope = logger.Loc.Empty; +const Lexer = js_lexer.Lexer; fn JSONLikeParser(opts: js_lexer.JSONOptions) type { - const Lexer = if (opts.allow_comments) js_lexer.TSConfigJSONLexer else js_lexer.JSONLexer; return struct { lexer: Lexer, source: *logger.Source, @@ -46,12 +46,21 @@ fn JSONLikeParser(opts: js_lexer.JSONOptions) type { allocator: *std.mem.Allocator, pub fn init(allocator: *std.mem.Allocator, source: *logger.Source, log: *logger.Log) !Parser { - return Parser{ - .lexer = try Lexer.init(log, source, allocator), - .allocator = allocator, - .log = log, - .source = source, - }; + if (opts.allow_comments) { + return Parser{ + .lexer = try Lexer.initTSConfig(log, source, allocator), + .allocator = allocator, + .log = log, + .source = source, + }; + } else { + return Parser{ + .lexer = try Lexer.initJSON(log, source, allocator), + .allocator = allocator, + .log = log, + .source = source, + }; + } } const Parser = @This(); @@ -217,6 +226,7 @@ const duplicateKeyJson = "{ \"name\": \"valid\", \"name\": \"invalid\" }"; const js_printer = @import("js_printer.zig"); const renamer = @import("renamer.zig"); +const SymbolList = [][]Symbol; fn expectPrintedJSON(_contents: string, expected: string) void { if (alloc.dynamic_manager == null) { @@ -240,7 +250,8 @@ fn expectPrintedJSON(_contents: string, expected: string) void { .stmts = &([_]Stmt{stmt}), }; const tree = js_ast.Ast.initTest(&([_]js_ast.Part{part})); - var symbol_map = Symbol.Map{}; + var symbols: SymbolList = &([_][]Symbol{tree.symbols}); + var symbol_map = js_ast.Symbol.Map.initList(symbols); if (log.msgs.items.len > 0) { std.debug.panic("--FAIL--\nExpr {s}\nLog: {s}\n--FAIL--", .{ expr, log.msgs.items[0].data.text }); } |