diff options
author | 2021-04-23 17:08:37 -0700 | |
---|---|---|
committer | 2021-04-23 17:08:37 -0700 | |
commit | 6495a07c3120c0d4fb96e98334eb32deaf00df71 (patch) | |
tree | 58c06a476bb7079e2a3231cd6215743db58a9e46 /src/js_parser.zig | |
parent | fe7acb13da80477cce47af843753d9efb7e9bbb9 (diff) | |
download | bun-6495a07c3120c0d4fb96e98334eb32deaf00df71.tar.gz bun-6495a07c3120c0d4fb96e98334eb32deaf00df71.tar.zst bun-6495a07c3120c0d4fb96e98334eb32deaf00df71.zip |
throw; debugger;{{{{{
Diffstat (limited to 'src/js_parser.zig')
-rw-r--r-- | src/js_parser.zig | 25 |
1 files changed, 22 insertions, 3 deletions
diff --git a/src/js_parser.zig b/src/js_parser.zig index a3bc2b298..0f0149cea 100644 --- a/src/js_parser.zig +++ b/src/js_parser.zig @@ -2210,13 +2210,32 @@ const P = struct { return p.s(S.Return{ .value = value }, loc); }, .t_throw => { - notimpl(); + p.lexer.next(); + if (p.lexer.has_newline_before) { + try p.log.addError(p.source, logger.Loc{ + .start = loc.start + 5, + }, "Unexpected newline after \"throw\""); + fail(); + } + const expr = p.parseExpr(.lowest); + p.lexer.expectOrInsertSemicolon(); + return p.s(S.Throw{ .value = expr }, loc); }, .t_debugger => { - notimpl(); + p.lexer.next(); + p.lexer.expectOrInsertSemicolon(); + return p.s(S.Debugger{}, loc); }, .t_open_brace => { - notimpl(); + _ = try p.pushScopeForParsePass(.block, loc); + defer p.popScope(); + p.lexer.next(); + var stmtOpts = ParseStatementOptions{}; + const stmts = p.parseStmtsUpTo(.t_close_brace, &stmtOpts) catch unreachable; + p.lexer.next(); + return p.s(S.Block{ + .stmts = stmts, + }, loc); }, else => { |