diff options
author | 2022-03-01 22:18:16 -0800 | |
---|---|---|
committer | 2022-03-01 22:18:16 -0800 | |
commit | 7b4f239d33f2c9641350ce32cede2141e3075c72 (patch) | |
tree | 9eca3fce49c2b232e653b3a88d57f544b3aefb15 | |
parent | 80d4faa8ab26d04da35e3a1debf86137e78f41b6 (diff) | |
download | bun-7b4f239d33f2c9641350ce32cede2141e3075c72.tar.gz bun-7b4f239d33f2c9641350ce32cede2141e3075c72.tar.zst bun-7b4f239d33f2c9641350ce32cede2141e3075c72.zip |
[JS Parser] Fix bug with `super` from adding class static blocks
-rw-r--r-- | src/js_parser/js_parser.zig | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/src/js_parser/js_parser.zig b/src/js_parser/js_parser.zig index 358ae165a..8b28c8eee 100644 --- a/src/js_parser/js_parser.zig +++ b/src/js_parser/js_parser.zig @@ -8566,7 +8566,7 @@ fn NewParser_( try p.declareBinding(Symbol.Kind.hoisted, &arg.binding, &opts); } - // The ability to call "super()" is inherited by arrow functions + // The ability to use "this" and "super()" is inherited by arrow functions data.allow_super_call = p.fn_or_arrow_data_parse.allow_super_call; data.allow_super_property = p.fn_or_arrow_data_parse.allow_super_property; data.is_this_disallowed = p.fn_or_arrow_data_parse.is_this_disallowed; @@ -9241,7 +9241,17 @@ fn NewParser_( } try p.lexer.next(); + + // "this" and "super" property access is allowed in field initializers + const old_is_this_disallowed = p.fn_or_arrow_data_parse.is_this_disallowed; + const old_allow_super_property = p.fn_or_arrow_data_parse.allow_super_property; + p.fn_or_arrow_data_parse.is_this_disallowed = false; + p.fn_or_arrow_data_parse.allow_super_property = true; + initializer = try p.parseExpr(.comma); + + p.fn_or_arrow_data_parse.is_this_disallowed = old_is_this_disallowed; + p.fn_or_arrow_data_parse.allow_super_property = old_allow_super_property; } // Special-case private identifiers @@ -9317,6 +9327,7 @@ fn NewParser_( .allow_await = if (opts.is_async) AwaitOrYield.allow_expr else AwaitOrYield.allow_ident, .allow_yield = if (opts.is_generator) AwaitOrYield.allow_expr else AwaitOrYield.allow_ident, .allow_super_call = opts.class_has_extends and is_constructor, + .allow_super_property = true, .allow_ts_decorators = opts.allow_ts_decorators, .is_constructor = is_constructor, |