aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Jarred Sumner <jarred@jarredsumner.com> 2021-05-27 14:56:53 -0700
committerGravatar Jarred Sumner <jarred@jarredsumner.com> 2021-05-27 14:56:53 -0700
commitebefe97073ad878550eec42a37b3bbb1dc5deaa5 (patch)
tree22baf1843ab9c049b723053cfd04f02a49dd1c31
parent84ea80b813c8b3dffe7ccc112b10fb034f21ea30 (diff)
downloadbun-ebefe97073ad878550eec42a37b3bbb1dc5deaa5.tar.gz
bun-ebefe97073ad878550eec42a37b3bbb1dc5deaa5.tar.zst
bun-ebefe97073ad878550eec42a37b3bbb1dc5deaa5.zip
Fix yield*
-rw-r--r--src/js_parser/js_parser.zig12
1 files changed, 3 insertions, 9 deletions
diff --git a/src/js_parser/js_parser.zig b/src/js_parser/js_parser.zig
index f1855c1a7..109cbdf3d 100644
--- a/src/js_parser/js_parser.zig
+++ b/src/js_parser/js_parser.zig
@@ -6690,7 +6690,7 @@ pub const P = struct {
}
}
- pub fn parseYieldExpr(p: *P, loc: logger.Loc) Expr {
+ pub fn parseYieldExpr(p: *P, loc: logger.Loc) !ExprNodeIndex {
// Parse a yield-from expression, which yields from an iterator
const isStar = p.lexer.token == T.t_asterisk;
@@ -8211,21 +8211,15 @@ pub const P = struct {
if (AsyncPrefixExpression.find(raw) != .is_yield) {
p.log.addRangeError(p.source, name_range, "The keyword \"yield\" cannot be escaped") catch unreachable;
} else {
- if (level.gte(.assign)) {
+ if (level.gt(.assign)) {
p.log.addRangeError(p.source, name_range, "Cannot use a \"yield\" here without parentheses") catch unreachable;
}
- const value = try p.parseExpr(.prefix);
if (p.fn_or_arrow_data_parse.track_arrow_arg_errors) {
p.fn_or_arrow_data_parse.arrow_arg_errors.invalid_expr_yield = name_range;
}
- if (p.lexer.token == T.t_asterisk_asterisk) {
- try p.lexer.unexpected();
- return error.SyntaxError;
- }
-
- return p.e(E.Yield{ .value = value }, loc);
+ return p.parseYieldExpr(loc);
}
},
// .allow_ident => {