From fca1703ee57a1ffc528e54ae90c1dab74aa73219 Mon Sep 17 00:00:00 2001 From: "alexander.akait" Date: Wed, 24 May 2023 00:35:55 +0300 Subject: [PATCH] refactor: rebase --- lib/javascript/JavascriptParser.js | 42 ++++++++++++++++++++---------- 1 file changed, 28 insertions(+), 14 deletions(-) diff --git a/lib/javascript/JavascriptParser.js b/lib/javascript/JavascriptParser.js index 15d2e5a5516..ee15ebcd099 100644 --- a/lib/javascript/JavascriptParser.js +++ b/lib/javascript/JavascriptParser.js @@ -277,7 +277,7 @@ class JavascriptParser extends Parser { ]), /** @type {SyncBailHook<[MethodDefinition | PropertyDefinition | StaticBlock, ClassExpression | ClassDeclaration], boolean | void>} */ classBodyElement: new SyncBailHook(["element", "classDefinition"]), - /** @type {SyncBailHook<[Expression, MethodDefinition | PropertyDefinition, ClassExpression | ClassDeclaration], boolean | void>} */ + /** @type {SyncBailHook<[Expression, MethodDefinition | PropertyDefinition | StaticBlock, ClassExpression | ClassDeclaration], boolean | void>} */ classBodyValue: new SyncBailHook([ "expression", "element", @@ -3963,20 +3963,34 @@ class JavascriptParser extends Parser { return false; } const items = - /** @type {(MethodDefinition | PropertyDefinition)[]} */ + /** @type {TODO[]} */ (expr.body.body); - return items.every( - item => - (!item.computed || - !item.key || - this.isPure(item.key, item.range[0])) && - (!item.static || - !item.value || - this.isPure( - item.value, - item.key ? item.key.range[1] : item.range[0] - )) - ); + return items.every(item => { + if ( + item.computed && + item.key && + !this.isPure(item.key, item.range[0]) + ) { + return false; + } + + if ( + item.static && + item.value && + !this.isPure( + item.value, + item.key ? item.key.range[1] : item.range[0] + ) + ) { + return false; + } + + if (item.type === "StaticBlock") { + return false; + } + + return true; + }); } case "FunctionDeclaration":