From b141c85b17414c864c12e8f65f2e14ee70018d38 Mon Sep 17 00:00:00 2001 From: Sosuke Suzuki Date: Thu, 26 Aug 2021 03:19:04 +0900 Subject: [PATCH] fix(babel-parser): delete `static` property from class static block for TS (#13680) * Delete static modifier from static blocks node * Update tests * Address review * Address review * Add tests from review * Add tests --- .../src/plugins/typescript/index.js | 48 ++++++++++++++----- .../input.ts | 3 ++ .../output.json | 2 - .../input.ts | 0 .../options.json | 12 +++++ .../input.ts | 3 ++ .../output.json | 2 - .../input.ts | 0 .../options.json | 12 +++++ .../input.ts | 3 ++ .../output.json | 2 - .../input.ts | 0 .../options.json | 12 +++++ .../input.ts | 0 .../output.json | 2 - .../input.ts | 3 ++ .../options.json | 12 +++++ .../input.ts | 0 .../input.ts | 3 ++ .../output.json | 38 +++++++++++++++ .../output.json | 2 - .../input.ts | 3 ++ .../options.json | 12 +++++ .../output.json | 2 +- .../input.ts | 0 .../output.json | 1 - .../input.ts | 3 ++ .../options.json | 12 +++++ .../input.ts | 0 .../output.json | 2 - .../input.ts | 3 ++ .../options.json | 12 +++++ .../output.json | 1 - .../output.json | 1 - .../output.json | 1 - .../static-blocks/static-blocks/output.json | 1 - 36 files changed, 183 insertions(+), 30 deletions(-) create mode 100644 packages/babel-parser/test/fixtures/typescript/static-blocks/invalid-static-block-with-accessibility-private-01/input.ts rename packages/babel-parser/test/fixtures/typescript/static-blocks/{invalid-static-block-with-accessibility-private => invalid-static-block-with-accessibility-private-01}/output.json (91%) rename packages/babel-parser/test/fixtures/typescript/static-blocks/{invalid-static-block-with-accessibility-private => invalid-static-block-with-accessibility-private-02}/input.ts (100%) create mode 100644 packages/babel-parser/test/fixtures/typescript/static-blocks/invalid-static-block-with-accessibility-private-02/options.json create mode 100644 packages/babel-parser/test/fixtures/typescript/static-blocks/invalid-static-block-with-accessibility-protected-01/input.ts rename packages/babel-parser/test/fixtures/typescript/static-blocks/{invalid-static-block-with-accessibility-protected => invalid-static-block-with-accessibility-protected-01}/output.json (91%) rename packages/babel-parser/test/fixtures/typescript/static-blocks/{invalid-static-block-with-accessibility-protected => invalid-static-block-with-accessibility-protected-02}/input.ts (100%) create mode 100644 packages/babel-parser/test/fixtures/typescript/static-blocks/invalid-static-block-with-accessibility-protected-02/options.json create mode 100644 packages/babel-parser/test/fixtures/typescript/static-blocks/invalid-static-block-with-accessibility-public-01/input.ts rename packages/babel-parser/test/fixtures/typescript/static-blocks/{invalid-static-block-with-accessibility-public => invalid-static-block-with-accessibility-public-01}/output.json (91%) rename packages/babel-parser/test/fixtures/typescript/static-blocks/{invalid-static-block-with-accessibility-public => invalid-static-block-with-accessibility-public-02}/input.ts (100%) create mode 100644 packages/babel-parser/test/fixtures/typescript/static-blocks/invalid-static-block-with-accessibility-public-02/options.json rename packages/babel-parser/test/fixtures/typescript/static-blocks/{invalid-static-block-with-modifier-abstract => invalid-static-block-with-modifier-abstract-01}/input.ts (100%) rename packages/babel-parser/test/fixtures/typescript/static-blocks/{invalid-static-block-with-modifier-abstract => invalid-static-block-with-modifier-abstract-01}/output.json (91%) create mode 100644 packages/babel-parser/test/fixtures/typescript/static-blocks/invalid-static-block-with-modifier-abstract-02/input.ts create mode 100644 packages/babel-parser/test/fixtures/typescript/static-blocks/invalid-static-block-with-modifier-abstract-02/options.json rename packages/babel-parser/test/fixtures/typescript/static-blocks/{invalid-static-block-with-modifier-override => invalid-static-block-with-modifier-override-01}/input.ts (100%) create mode 100644 packages/babel-parser/test/fixtures/typescript/static-blocks/invalid-static-block-with-modifier-override-01/invalid-static-block-with-modifier-abstract/input.ts create mode 100644 packages/babel-parser/test/fixtures/typescript/static-blocks/invalid-static-block-with-modifier-override-01/invalid-static-block-with-modifier-abstract/output.json rename packages/babel-parser/test/fixtures/typescript/static-blocks/{invalid-static-block-with-modifier-override => invalid-static-block-with-modifier-override-01}/output.json (91%) create mode 100644 packages/babel-parser/test/fixtures/typescript/static-blocks/invalid-static-block-with-modifier-override-02/input.ts create mode 100644 packages/babel-parser/test/fixtures/typescript/static-blocks/invalid-static-block-with-modifier-override-02/options.json rename packages/babel-parser/test/fixtures/typescript/static-blocks/{invalid-static-blocks-with-modifer-declare => invalid-static-blocks-with-modifer-declare-01}/input.ts (100%) rename packages/babel-parser/test/fixtures/typescript/static-blocks/{invalid-static-blocks-with-modifer-declare => invalid-static-blocks-with-modifer-declare-01}/output.json (97%) create mode 100644 packages/babel-parser/test/fixtures/typescript/static-blocks/invalid-static-blocks-with-modifer-declare-02/input.ts create mode 100644 packages/babel-parser/test/fixtures/typescript/static-blocks/invalid-static-blocks-with-modifer-declare-02/options.json rename packages/babel-parser/test/fixtures/typescript/static-blocks/{invalid-static-blocks-with-modifier-readonly => invalid-static-blocks-with-modifier-readonly-01}/input.ts (100%) rename packages/babel-parser/test/fixtures/typescript/static-blocks/{invalid-static-blocks-with-modifier-readonly => invalid-static-blocks-with-modifier-readonly-01}/output.json (91%) create mode 100644 packages/babel-parser/test/fixtures/typescript/static-blocks/invalid-static-blocks-with-modifier-readonly-02/input.ts create mode 100644 packages/babel-parser/test/fixtures/typescript/static-blocks/invalid-static-blocks-with-modifier-readonly-02/options.json diff --git a/packages/babel-parser/src/plugins/typescript/index.js b/packages/babel-parser/src/plugins/typescript/index.js index a23ef19ebe53..5fde51cb9b0a 100644 --- a/packages/babel-parser/src/plugins/typescript/index.js +++ b/packages/babel-parser/src/plugins/typescript/index.js @@ -230,17 +230,22 @@ export default (superClass: Class): Class => } /** Parses a modifier matching one the given modifier names. */ - tsParseModifier(allowedModifiers: T[]): ?T { + tsParseModifier( + allowedModifiers: T[], + stopOnStartOfClassStaticBlock?: boolean, + ): ?T { if (!this.match(tt.name)) { return undefined; } const modifier = this.state.value; - if ( - allowedModifiers.indexOf(modifier) !== -1 && - this.tsTryParse(this.tsNextTokenCanFollowModifier.bind(this)) - ) { - return modifier; + if (allowedModifiers.indexOf(modifier) !== -1) { + if (stopOnStartOfClassStaticBlock && this.tsIsStartOfStaticBlocks()) { + return undefined; + } + if (this.tsTryParse(this.tsNextTokenCanFollowModifier.bind(this))) { + return modifier; + } } return undefined; } @@ -258,6 +263,7 @@ export default (superClass: Class): Class => allowedModifiers: TsModifier[], disallowedModifiers?: TsModifier[], errorTemplate?: ErrorTemplate, + stopOnStartOfClassStaticBlock?: boolean, ): void { const enforceOrder = (pos, modifier, before, after) => { if (modifier === before && modified[after]) { @@ -277,6 +283,7 @@ export default (superClass: Class): Class => const startPos = this.state.start; const modifier: ?TsModifier = this.tsParseModifier( allowedModifiers.concat(disallowedModifiers ?? []), + stopOnStartOfClassStaticBlock, ); if (!modifier) break; @@ -2374,12 +2381,19 @@ export default (superClass: Class): Class => }); } + tsIsStartOfStaticBlocks() { + return ( + this.isContextual("static") && + this.lookaheadCharCode() === charCodes.leftCurlyBrace + ); + } + parseClassMember( classBody: N.ClassBody, member: any, state: N.ParseClassMemberState, ): void { - const invalidModifersForStaticBlocks = [ + const modifiers = [ "declare", "private", "public", @@ -2387,21 +2401,31 @@ export default (superClass: Class): Class => "override", "abstract", "readonly", + "static", ]; this.tsParseModifiers( member, - invalidModifersForStaticBlocks.concat(["static"]), + modifiers, + /* disallowedModifiers */ undefined, + /* errorTemplate */ undefined, + /* stopOnStartOfClassStaticBlock */ true, ); const callParseClassMemberWithIsStatic = () => { - const isStatic = !!member.static; - if (isStatic && this.eat(tt.braceL)) { - if (this.tsHasSomeModifiers(member, invalidModifersForStaticBlocks)) { + if (this.tsIsStartOfStaticBlocks()) { + this.next(); // eat "static" + this.next(); // eat "{" + if (this.tsHasSomeModifiers(member, modifiers)) { this.raise(this.state.pos, TSErrors.StaticBlockCannotHaveModifier); } this.parseClassStaticBlock(classBody, ((member: any): N.StaticBlock)); } else { - this.parseClassMemberWithIsStatic(classBody, member, state, isStatic); + this.parseClassMemberWithIsStatic( + classBody, + member, + state, + !!member.static, + ); } }; if (member.declare) { diff --git a/packages/babel-parser/test/fixtures/typescript/static-blocks/invalid-static-block-with-accessibility-private-01/input.ts b/packages/babel-parser/test/fixtures/typescript/static-blocks/invalid-static-block-with-accessibility-private-01/input.ts new file mode 100644 index 000000000000..88520e66f248 --- /dev/null +++ b/packages/babel-parser/test/fixtures/typescript/static-blocks/invalid-static-block-with-accessibility-private-01/input.ts @@ -0,0 +1,3 @@ +class Foo { + private static {} +} diff --git a/packages/babel-parser/test/fixtures/typescript/static-blocks/invalid-static-block-with-accessibility-private/output.json b/packages/babel-parser/test/fixtures/typescript/static-blocks/invalid-static-block-with-accessibility-private-01/output.json similarity index 91% rename from packages/babel-parser/test/fixtures/typescript/static-blocks/invalid-static-block-with-accessibility-private/output.json rename to packages/babel-parser/test/fixtures/typescript/static-blocks/invalid-static-block-with-accessibility-private-01/output.json index 65faa07fd21f..f73aaa908193 100644 --- a/packages/babel-parser/test/fixtures/typescript/static-blocks/invalid-static-block-with-accessibility-private/output.json +++ b/packages/babel-parser/test/fixtures/typescript/static-blocks/invalid-static-block-with-accessibility-private-01/output.json @@ -2,7 +2,6 @@ "type": "File", "start":0,"end":33,"loc":{"start":{"line":1,"column":0},"end":{"line":3,"column":1}}, "errors": [ - "SyntaxError: 'private' modifier must precede 'static' modifier. (2:9)", "SyntaxError: Static class blocks cannot have any modifier. (2:19)" ], "program": { @@ -27,7 +26,6 @@ { "type": "StaticBlock", "start":14,"end":31,"loc":{"start":{"line":2,"column":2},"end":{"line":2,"column":19}}, - "static": true, "accessibility": "private", "body": [] } diff --git a/packages/babel-parser/test/fixtures/typescript/static-blocks/invalid-static-block-with-accessibility-private/input.ts b/packages/babel-parser/test/fixtures/typescript/static-blocks/invalid-static-block-with-accessibility-private-02/input.ts similarity index 100% rename from packages/babel-parser/test/fixtures/typescript/static-blocks/invalid-static-block-with-accessibility-private/input.ts rename to packages/babel-parser/test/fixtures/typescript/static-blocks/invalid-static-block-with-accessibility-private-02/input.ts diff --git a/packages/babel-parser/test/fixtures/typescript/static-blocks/invalid-static-block-with-accessibility-private-02/options.json b/packages/babel-parser/test/fixtures/typescript/static-blocks/invalid-static-block-with-accessibility-private-02/options.json new file mode 100644 index 000000000000..4418a0a19024 --- /dev/null +++ b/packages/babel-parser/test/fixtures/typescript/static-blocks/invalid-static-block-with-accessibility-private-02/options.json @@ -0,0 +1,12 @@ +{ + "plugins": [ + [ + "classStaticBlock" + ], + [ + "typescript" + ] + ], + "sourceType": "module", + "throws": "Unexpected token (2:17)" +} \ No newline at end of file diff --git a/packages/babel-parser/test/fixtures/typescript/static-blocks/invalid-static-block-with-accessibility-protected-01/input.ts b/packages/babel-parser/test/fixtures/typescript/static-blocks/invalid-static-block-with-accessibility-protected-01/input.ts new file mode 100644 index 000000000000..3def96830816 --- /dev/null +++ b/packages/babel-parser/test/fixtures/typescript/static-blocks/invalid-static-block-with-accessibility-protected-01/input.ts @@ -0,0 +1,3 @@ +class Foo { + protected static {} +} diff --git a/packages/babel-parser/test/fixtures/typescript/static-blocks/invalid-static-block-with-accessibility-protected/output.json b/packages/babel-parser/test/fixtures/typescript/static-blocks/invalid-static-block-with-accessibility-protected-01/output.json similarity index 91% rename from packages/babel-parser/test/fixtures/typescript/static-blocks/invalid-static-block-with-accessibility-protected/output.json rename to packages/babel-parser/test/fixtures/typescript/static-blocks/invalid-static-block-with-accessibility-protected-01/output.json index b0cfcdb02234..06de34f306e9 100644 --- a/packages/babel-parser/test/fixtures/typescript/static-blocks/invalid-static-block-with-accessibility-protected/output.json +++ b/packages/babel-parser/test/fixtures/typescript/static-blocks/invalid-static-block-with-accessibility-protected-01/output.json @@ -2,7 +2,6 @@ "type": "File", "start":0,"end":35,"loc":{"start":{"line":1,"column":0},"end":{"line":3,"column":1}}, "errors": [ - "SyntaxError: 'protected' modifier must precede 'static' modifier. (2:9)", "SyntaxError: Static class blocks cannot have any modifier. (2:21)" ], "program": { @@ -27,7 +26,6 @@ { "type": "StaticBlock", "start":14,"end":33,"loc":{"start":{"line":2,"column":2},"end":{"line":2,"column":21}}, - "static": true, "accessibility": "protected", "body": [] } diff --git a/packages/babel-parser/test/fixtures/typescript/static-blocks/invalid-static-block-with-accessibility-protected/input.ts b/packages/babel-parser/test/fixtures/typescript/static-blocks/invalid-static-block-with-accessibility-protected-02/input.ts similarity index 100% rename from packages/babel-parser/test/fixtures/typescript/static-blocks/invalid-static-block-with-accessibility-protected/input.ts rename to packages/babel-parser/test/fixtures/typescript/static-blocks/invalid-static-block-with-accessibility-protected-02/input.ts diff --git a/packages/babel-parser/test/fixtures/typescript/static-blocks/invalid-static-block-with-accessibility-protected-02/options.json b/packages/babel-parser/test/fixtures/typescript/static-blocks/invalid-static-block-with-accessibility-protected-02/options.json new file mode 100644 index 000000000000..8720025572f6 --- /dev/null +++ b/packages/babel-parser/test/fixtures/typescript/static-blocks/invalid-static-block-with-accessibility-protected-02/options.json @@ -0,0 +1,12 @@ +{ + "plugins": [ + [ + "classStaticBlock" + ], + [ + "typescript" + ] + ], + "sourceType": "module", + "throws": "Unexpected token (2:19)" +} \ No newline at end of file diff --git a/packages/babel-parser/test/fixtures/typescript/static-blocks/invalid-static-block-with-accessibility-public-01/input.ts b/packages/babel-parser/test/fixtures/typescript/static-blocks/invalid-static-block-with-accessibility-public-01/input.ts new file mode 100644 index 000000000000..8562b2bb3cb6 --- /dev/null +++ b/packages/babel-parser/test/fixtures/typescript/static-blocks/invalid-static-block-with-accessibility-public-01/input.ts @@ -0,0 +1,3 @@ +class Foo { + public static {} +} diff --git a/packages/babel-parser/test/fixtures/typescript/static-blocks/invalid-static-block-with-accessibility-public/output.json b/packages/babel-parser/test/fixtures/typescript/static-blocks/invalid-static-block-with-accessibility-public-01/output.json similarity index 91% rename from packages/babel-parser/test/fixtures/typescript/static-blocks/invalid-static-block-with-accessibility-public/output.json rename to packages/babel-parser/test/fixtures/typescript/static-blocks/invalid-static-block-with-accessibility-public-01/output.json index 178d8a4e5dbd..f7b350b97c6c 100644 --- a/packages/babel-parser/test/fixtures/typescript/static-blocks/invalid-static-block-with-accessibility-public/output.json +++ b/packages/babel-parser/test/fixtures/typescript/static-blocks/invalid-static-block-with-accessibility-public-01/output.json @@ -2,7 +2,6 @@ "type": "File", "start":0,"end":32,"loc":{"start":{"line":1,"column":0},"end":{"line":3,"column":1}}, "errors": [ - "SyntaxError: 'public' modifier must precede 'static' modifier. (2:9)", "SyntaxError: Static class blocks cannot have any modifier. (2:18)" ], "program": { @@ -27,7 +26,6 @@ { "type": "StaticBlock", "start":14,"end":30,"loc":{"start":{"line":2,"column":2},"end":{"line":2,"column":18}}, - "static": true, "accessibility": "public", "body": [] } diff --git a/packages/babel-parser/test/fixtures/typescript/static-blocks/invalid-static-block-with-accessibility-public/input.ts b/packages/babel-parser/test/fixtures/typescript/static-blocks/invalid-static-block-with-accessibility-public-02/input.ts similarity index 100% rename from packages/babel-parser/test/fixtures/typescript/static-blocks/invalid-static-block-with-accessibility-public/input.ts rename to packages/babel-parser/test/fixtures/typescript/static-blocks/invalid-static-block-with-accessibility-public-02/input.ts diff --git a/packages/babel-parser/test/fixtures/typescript/static-blocks/invalid-static-block-with-accessibility-public-02/options.json b/packages/babel-parser/test/fixtures/typescript/static-blocks/invalid-static-block-with-accessibility-public-02/options.json new file mode 100644 index 000000000000..1795a8b35913 --- /dev/null +++ b/packages/babel-parser/test/fixtures/typescript/static-blocks/invalid-static-block-with-accessibility-public-02/options.json @@ -0,0 +1,12 @@ +{ + "plugins": [ + [ + "classStaticBlock" + ], + [ + "typescript" + ] + ], + "sourceType": "module", + "throws": "Unexpected token (2:16)" +} \ No newline at end of file diff --git a/packages/babel-parser/test/fixtures/typescript/static-blocks/invalid-static-block-with-modifier-abstract/input.ts b/packages/babel-parser/test/fixtures/typescript/static-blocks/invalid-static-block-with-modifier-abstract-01/input.ts similarity index 100% rename from packages/babel-parser/test/fixtures/typescript/static-blocks/invalid-static-block-with-modifier-abstract/input.ts rename to packages/babel-parser/test/fixtures/typescript/static-blocks/invalid-static-block-with-modifier-abstract-01/input.ts diff --git a/packages/babel-parser/test/fixtures/typescript/static-blocks/invalid-static-block-with-modifier-abstract/output.json b/packages/babel-parser/test/fixtures/typescript/static-blocks/invalid-static-block-with-modifier-abstract-01/output.json similarity index 91% rename from packages/babel-parser/test/fixtures/typescript/static-blocks/invalid-static-block-with-modifier-abstract/output.json rename to packages/babel-parser/test/fixtures/typescript/static-blocks/invalid-static-block-with-modifier-abstract-01/output.json index 66fd7a1b2bc0..057eae5cfc8a 100644 --- a/packages/babel-parser/test/fixtures/typescript/static-blocks/invalid-static-block-with-modifier-abstract/output.json +++ b/packages/babel-parser/test/fixtures/typescript/static-blocks/invalid-static-block-with-modifier-abstract-01/output.json @@ -2,7 +2,6 @@ "type": "File", "start":0,"end":34,"loc":{"start":{"line":1,"column":0},"end":{"line":3,"column":1}}, "errors": [ - "SyntaxError: 'static' modifier cannot be used with 'abstract' modifier. (2:11)", "SyntaxError: Static class blocks cannot have any modifier. (2:20)" ], "program": { @@ -28,7 +27,6 @@ "type": "StaticBlock", "start":14,"end":32,"loc":{"start":{"line":2,"column":2},"end":{"line":2,"column":20}}, "abstract": true, - "static": true, "body": [] } ] diff --git a/packages/babel-parser/test/fixtures/typescript/static-blocks/invalid-static-block-with-modifier-abstract-02/input.ts b/packages/babel-parser/test/fixtures/typescript/static-blocks/invalid-static-block-with-modifier-abstract-02/input.ts new file mode 100644 index 000000000000..3e83b29e0a5c --- /dev/null +++ b/packages/babel-parser/test/fixtures/typescript/static-blocks/invalid-static-block-with-modifier-abstract-02/input.ts @@ -0,0 +1,3 @@ +class Foo { + static abstract {} +} diff --git a/packages/babel-parser/test/fixtures/typescript/static-blocks/invalid-static-block-with-modifier-abstract-02/options.json b/packages/babel-parser/test/fixtures/typescript/static-blocks/invalid-static-block-with-modifier-abstract-02/options.json new file mode 100644 index 000000000000..954158d98be2 --- /dev/null +++ b/packages/babel-parser/test/fixtures/typescript/static-blocks/invalid-static-block-with-modifier-abstract-02/options.json @@ -0,0 +1,12 @@ +{ + "plugins": [ + [ + "classStaticBlock" + ], + [ + "typescript" + ] + ], + "sourceType": "module", + "throws": "Unexpected token (2:18)" +} \ No newline at end of file diff --git a/packages/babel-parser/test/fixtures/typescript/static-blocks/invalid-static-block-with-modifier-override/input.ts b/packages/babel-parser/test/fixtures/typescript/static-blocks/invalid-static-block-with-modifier-override-01/input.ts similarity index 100% rename from packages/babel-parser/test/fixtures/typescript/static-blocks/invalid-static-block-with-modifier-override/input.ts rename to packages/babel-parser/test/fixtures/typescript/static-blocks/invalid-static-block-with-modifier-override-01/input.ts diff --git a/packages/babel-parser/test/fixtures/typescript/static-blocks/invalid-static-block-with-modifier-override-01/invalid-static-block-with-modifier-abstract/input.ts b/packages/babel-parser/test/fixtures/typescript/static-blocks/invalid-static-block-with-modifier-override-01/invalid-static-block-with-modifier-abstract/input.ts new file mode 100644 index 000000000000..59517ad9d281 --- /dev/null +++ b/packages/babel-parser/test/fixtures/typescript/static-blocks/invalid-static-block-with-modifier-override-01/invalid-static-block-with-modifier-abstract/input.ts @@ -0,0 +1,3 @@ +class Foo { + abstract static {} +} diff --git a/packages/babel-parser/test/fixtures/typescript/static-blocks/invalid-static-block-with-modifier-override-01/invalid-static-block-with-modifier-abstract/output.json b/packages/babel-parser/test/fixtures/typescript/static-blocks/invalid-static-block-with-modifier-override-01/invalid-static-block-with-modifier-abstract/output.json new file mode 100644 index 000000000000..057eae5cfc8a --- /dev/null +++ b/packages/babel-parser/test/fixtures/typescript/static-blocks/invalid-static-block-with-modifier-override-01/invalid-static-block-with-modifier-abstract/output.json @@ -0,0 +1,38 @@ +{ + "type": "File", + "start":0,"end":34,"loc":{"start":{"line":1,"column":0},"end":{"line":3,"column":1}}, + "errors": [ + "SyntaxError: Static class blocks cannot have any modifier. (2:20)" + ], + "program": { + "type": "Program", + "start":0,"end":34,"loc":{"start":{"line":1,"column":0},"end":{"line":3,"column":1}}, + "sourceType": "module", + "interpreter": null, + "body": [ + { + "type": "ClassDeclaration", + "start":0,"end":34,"loc":{"start":{"line":1,"column":0},"end":{"line":3,"column":1}}, + "id": { + "type": "Identifier", + "start":6,"end":9,"loc":{"start":{"line":1,"column":6},"end":{"line":1,"column":9},"identifierName":"Foo"}, + "name": "Foo" + }, + "superClass": null, + "body": { + "type": "ClassBody", + "start":10,"end":34,"loc":{"start":{"line":1,"column":10},"end":{"line":3,"column":1}}, + "body": [ + { + "type": "StaticBlock", + "start":14,"end":32,"loc":{"start":{"line":2,"column":2},"end":{"line":2,"column":20}}, + "abstract": true, + "body": [] + } + ] + } + } + ], + "directives": [] + } +} \ No newline at end of file diff --git a/packages/babel-parser/test/fixtures/typescript/static-blocks/invalid-static-block-with-modifier-override/output.json b/packages/babel-parser/test/fixtures/typescript/static-blocks/invalid-static-block-with-modifier-override-01/output.json similarity index 91% rename from packages/babel-parser/test/fixtures/typescript/static-blocks/invalid-static-block-with-modifier-override/output.json rename to packages/babel-parser/test/fixtures/typescript/static-blocks/invalid-static-block-with-modifier-override-01/output.json index cd9e56ada864..9c248a70609d 100644 --- a/packages/babel-parser/test/fixtures/typescript/static-blocks/invalid-static-block-with-modifier-override/output.json +++ b/packages/babel-parser/test/fixtures/typescript/static-blocks/invalid-static-block-with-modifier-override-01/output.json @@ -2,7 +2,6 @@ "type": "File", "start":0,"end":34,"loc":{"start":{"line":1,"column":0},"end":{"line":3,"column":1}}, "errors": [ - "SyntaxError: 'static' modifier must precede 'override' modifier. (2:11)", "SyntaxError: Static class blocks cannot have any modifier. (2:20)" ], "program": { @@ -28,7 +27,6 @@ "type": "StaticBlock", "start":14,"end":32,"loc":{"start":{"line":2,"column":2},"end":{"line":2,"column":20}}, "override": true, - "static": true, "body": [] } ] diff --git a/packages/babel-parser/test/fixtures/typescript/static-blocks/invalid-static-block-with-modifier-override-02/input.ts b/packages/babel-parser/test/fixtures/typescript/static-blocks/invalid-static-block-with-modifier-override-02/input.ts new file mode 100644 index 000000000000..e564308d38b0 --- /dev/null +++ b/packages/babel-parser/test/fixtures/typescript/static-blocks/invalid-static-block-with-modifier-override-02/input.ts @@ -0,0 +1,3 @@ +class Foo { + static override {} +} diff --git a/packages/babel-parser/test/fixtures/typescript/static-blocks/invalid-static-block-with-modifier-override-02/options.json b/packages/babel-parser/test/fixtures/typescript/static-blocks/invalid-static-block-with-modifier-override-02/options.json new file mode 100644 index 000000000000..954158d98be2 --- /dev/null +++ b/packages/babel-parser/test/fixtures/typescript/static-blocks/invalid-static-block-with-modifier-override-02/options.json @@ -0,0 +1,12 @@ +{ + "plugins": [ + [ + "classStaticBlock" + ], + [ + "typescript" + ] + ], + "sourceType": "module", + "throws": "Unexpected token (2:18)" +} \ No newline at end of file diff --git a/packages/babel-parser/test/fixtures/typescript/static-blocks/invalid-static-block-with-modifier-static/output.json b/packages/babel-parser/test/fixtures/typescript/static-blocks/invalid-static-block-with-modifier-static/output.json index e5dcf1757e61..4feac9427aa1 100644 --- a/packages/babel-parser/test/fixtures/typescript/static-blocks/invalid-static-block-with-modifier-static/output.json +++ b/packages/babel-parser/test/fixtures/typescript/static-blocks/invalid-static-block-with-modifier-static/output.json @@ -2,7 +2,7 @@ "type": "File", "start":0,"end":32,"loc":{"start":{"line":1,"column":0},"end":{"line":3,"column":1}}, "errors": [ - "SyntaxError: Duplicate modifier: 'static'. (2:9)" + "SyntaxError: Static class blocks cannot have any modifier. (2:18)" ], "program": { "type": "Program", diff --git a/packages/babel-parser/test/fixtures/typescript/static-blocks/invalid-static-blocks-with-modifer-declare/input.ts b/packages/babel-parser/test/fixtures/typescript/static-blocks/invalid-static-blocks-with-modifer-declare-01/input.ts similarity index 100% rename from packages/babel-parser/test/fixtures/typescript/static-blocks/invalid-static-blocks-with-modifer-declare/input.ts rename to packages/babel-parser/test/fixtures/typescript/static-blocks/invalid-static-blocks-with-modifer-declare-01/input.ts diff --git a/packages/babel-parser/test/fixtures/typescript/static-blocks/invalid-static-blocks-with-modifer-declare/output.json b/packages/babel-parser/test/fixtures/typescript/static-blocks/invalid-static-blocks-with-modifer-declare-01/output.json similarity index 97% rename from packages/babel-parser/test/fixtures/typescript/static-blocks/invalid-static-blocks-with-modifer-declare/output.json rename to packages/babel-parser/test/fixtures/typescript/static-blocks/invalid-static-blocks-with-modifer-declare-01/output.json index 0f311fbf182d..b17d4a941c20 100644 --- a/packages/babel-parser/test/fixtures/typescript/static-blocks/invalid-static-blocks-with-modifer-declare/output.json +++ b/packages/babel-parser/test/fixtures/typescript/static-blocks/invalid-static-blocks-with-modifer-declare-01/output.json @@ -27,7 +27,6 @@ "type": "StaticBlock", "start":14,"end":31,"loc":{"start":{"line":2,"column":2},"end":{"line":2,"column":19}}, "declare": true, - "static": true, "body": [] } ] diff --git a/packages/babel-parser/test/fixtures/typescript/static-blocks/invalid-static-blocks-with-modifer-declare-02/input.ts b/packages/babel-parser/test/fixtures/typescript/static-blocks/invalid-static-blocks-with-modifer-declare-02/input.ts new file mode 100644 index 000000000000..ca5c27a2a810 --- /dev/null +++ b/packages/babel-parser/test/fixtures/typescript/static-blocks/invalid-static-blocks-with-modifer-declare-02/input.ts @@ -0,0 +1,3 @@ +class Foo { + static declare {} +} diff --git a/packages/babel-parser/test/fixtures/typescript/static-blocks/invalid-static-blocks-with-modifer-declare-02/options.json b/packages/babel-parser/test/fixtures/typescript/static-blocks/invalid-static-blocks-with-modifer-declare-02/options.json new file mode 100644 index 000000000000..4418a0a19024 --- /dev/null +++ b/packages/babel-parser/test/fixtures/typescript/static-blocks/invalid-static-blocks-with-modifer-declare-02/options.json @@ -0,0 +1,12 @@ +{ + "plugins": [ + [ + "classStaticBlock" + ], + [ + "typescript" + ] + ], + "sourceType": "module", + "throws": "Unexpected token (2:17)" +} \ No newline at end of file diff --git a/packages/babel-parser/test/fixtures/typescript/static-blocks/invalid-static-blocks-with-modifier-readonly/input.ts b/packages/babel-parser/test/fixtures/typescript/static-blocks/invalid-static-blocks-with-modifier-readonly-01/input.ts similarity index 100% rename from packages/babel-parser/test/fixtures/typescript/static-blocks/invalid-static-blocks-with-modifier-readonly/input.ts rename to packages/babel-parser/test/fixtures/typescript/static-blocks/invalid-static-blocks-with-modifier-readonly-01/input.ts diff --git a/packages/babel-parser/test/fixtures/typescript/static-blocks/invalid-static-blocks-with-modifier-readonly/output.json b/packages/babel-parser/test/fixtures/typescript/static-blocks/invalid-static-blocks-with-modifier-readonly-01/output.json similarity index 91% rename from packages/babel-parser/test/fixtures/typescript/static-blocks/invalid-static-blocks-with-modifier-readonly/output.json rename to packages/babel-parser/test/fixtures/typescript/static-blocks/invalid-static-blocks-with-modifier-readonly-01/output.json index 86a169878b33..106872766fd1 100644 --- a/packages/babel-parser/test/fixtures/typescript/static-blocks/invalid-static-blocks-with-modifier-readonly/output.json +++ b/packages/babel-parser/test/fixtures/typescript/static-blocks/invalid-static-blocks-with-modifier-readonly-01/output.json @@ -2,7 +2,6 @@ "type": "File", "start":0,"end":34,"loc":{"start":{"line":1,"column":0},"end":{"line":3,"column":1}}, "errors": [ - "SyntaxError: 'static' modifier must precede 'readonly' modifier. (2:11)", "SyntaxError: Static class blocks cannot have any modifier. (2:20)" ], "program": { @@ -28,7 +27,6 @@ "type": "StaticBlock", "start":14,"end":32,"loc":{"start":{"line":2,"column":2},"end":{"line":2,"column":20}}, "readonly": true, - "static": true, "body": [] } ] diff --git a/packages/babel-parser/test/fixtures/typescript/static-blocks/invalid-static-blocks-with-modifier-readonly-02/input.ts b/packages/babel-parser/test/fixtures/typescript/static-blocks/invalid-static-blocks-with-modifier-readonly-02/input.ts new file mode 100644 index 000000000000..01d337693dd3 --- /dev/null +++ b/packages/babel-parser/test/fixtures/typescript/static-blocks/invalid-static-blocks-with-modifier-readonly-02/input.ts @@ -0,0 +1,3 @@ +class Foo { + static readonly {} +} diff --git a/packages/babel-parser/test/fixtures/typescript/static-blocks/invalid-static-blocks-with-modifier-readonly-02/options.json b/packages/babel-parser/test/fixtures/typescript/static-blocks/invalid-static-blocks-with-modifier-readonly-02/options.json new file mode 100644 index 000000000000..954158d98be2 --- /dev/null +++ b/packages/babel-parser/test/fixtures/typescript/static-blocks/invalid-static-blocks-with-modifier-readonly-02/options.json @@ -0,0 +1,12 @@ +{ + "plugins": [ + [ + "classStaticBlock" + ], + [ + "typescript" + ] + ], + "sourceType": "module", + "throws": "Unexpected token (2:18)" +} \ No newline at end of file diff --git a/packages/babel-parser/test/fixtures/typescript/static-blocks/static-blocks-and-proptery-named-static/output.json b/packages/babel-parser/test/fixtures/typescript/static-blocks/static-blocks-and-proptery-named-static/output.json index 1fd1dd823729..6e95aa0afec0 100644 --- a/packages/babel-parser/test/fixtures/typescript/static-blocks/static-blocks-and-proptery-named-static/output.json +++ b/packages/babel-parser/test/fixtures/typescript/static-blocks/static-blocks-and-proptery-named-static/output.json @@ -35,7 +35,6 @@ { "type": "StaticBlock", "start":24,"end":33,"loc":{"start":{"line":3,"column":2},"end":{"line":3,"column":11}}, - "static": true, "body": [] } ] diff --git a/packages/babel-parser/test/fixtures/typescript/static-blocks/static-blocks-and-static-property-named-static/output.json b/packages/babel-parser/test/fixtures/typescript/static-blocks/static-blocks-and-static-property-named-static/output.json index ffe88cead774..e4f907bf1b28 100644 --- a/packages/babel-parser/test/fixtures/typescript/static-blocks/static-blocks-and-static-property-named-static/output.json +++ b/packages/babel-parser/test/fixtures/typescript/static-blocks/static-blocks-and-static-property-named-static/output.json @@ -35,7 +35,6 @@ { "type": "StaticBlock", "start":31,"end":40,"loc":{"start":{"line":3,"column":2},"end":{"line":3,"column":11}}, - "static": true, "body": [] } ] diff --git a/packages/babel-parser/test/fixtures/typescript/static-blocks/static-blocks-and-static-property/output.json b/packages/babel-parser/test/fixtures/typescript/static-blocks/static-blocks-and-static-property/output.json index 754121e53f01..a24ce1884c1e 100644 --- a/packages/babel-parser/test/fixtures/typescript/static-blocks/static-blocks-and-static-property/output.json +++ b/packages/babel-parser/test/fixtures/typescript/static-blocks/static-blocks-and-static-property/output.json @@ -35,7 +35,6 @@ { "type": "StaticBlock", "start":28,"end":37,"loc":{"start":{"line":3,"column":2},"end":{"line":3,"column":11}}, - "static": true, "body": [] } ] diff --git a/packages/babel-parser/test/fixtures/typescript/static-blocks/static-blocks/output.json b/packages/babel-parser/test/fixtures/typescript/static-blocks/static-blocks/output.json index 05c10a18a8c4..38cec40a5346 100644 --- a/packages/babel-parser/test/fixtures/typescript/static-blocks/static-blocks/output.json +++ b/packages/babel-parser/test/fixtures/typescript/static-blocks/static-blocks/output.json @@ -23,7 +23,6 @@ { "type": "StaticBlock", "start":14,"end":23,"loc":{"start":{"line":2,"column":2},"end":{"line":2,"column":11}}, - "static": true, "body": [] } ]