diff --git a/packages/babel-parser/src/plugins/typescript/index.js b/packages/babel-parser/src/plugins/typescript/index.js index 59832ef58508..5fde51cb9b0a 100644 --- a/packages/babel-parser/src/plugins/typescript/index.js +++ b/packages/babel-parser/src/plugins/typescript/index.js @@ -2393,7 +2393,7 @@ export default (superClass: Class): Class => member: any, state: N.ParseClassMemberState, ): void { - const invalidModifersForStaticBlocks = [ + const modifiers = [ "declare", "private", "public", @@ -2401,10 +2401,11 @@ export default (superClass: Class): Class => "override", "abstract", "readonly", + "static", ]; this.tsParseModifiers( member, - invalidModifersForStaticBlocks.concat(["static"]), + modifiers, /* disallowedModifiers */ undefined, /* errorTemplate */ undefined, /* stopOnStartOfClassStaticBlock */ true, @@ -2414,7 +2415,7 @@ export default (superClass: Class): Class => if (this.tsIsStartOfStaticBlocks()) { this.next(); // eat "static" this.next(); // eat "{" - if (this.tsHasSomeModifiers(member, invalidModifersForStaticBlocks)) { + if (this.tsHasSomeModifiers(member, modifiers)) { this.raise(this.state.pos, TSErrors.StaticBlockCannotHaveModifier); } this.parseClassStaticBlock(classBody, ((member: any): N.StaticBlock)); 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 4f99e791d345..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 @@ -1,6 +1,9 @@ { "type": "File", "start":0,"end":32,"loc":{"start":{"line":1,"column":0},"end":{"line":3,"column":1}}, + "errors": [ + "SyntaxError: Static class blocks cannot have any modifier. (2:18)" + ], "program": { "type": "Program", "start":0,"end":32,"loc":{"start":{"line":1,"column":0},"end":{"line":3,"column":1}},