diff --git a/packages/ast-spec/src/expression/ObjectExpression/fixtures/_error_/abstract-method/fixture.ts b/packages/ast-spec/src/expression/ObjectExpression/fixtures/_error_/abstract-method/fixture.ts new file mode 100644 index 000000000000..8d7ba0694b01 --- /dev/null +++ b/packages/ast-spec/src/expression/ObjectExpression/fixtures/_error_/abstract-method/fixture.ts @@ -0,0 +1 @@ +({abstract method(){}}) diff --git a/packages/ast-spec/src/expression/ObjectExpression/fixtures/_error_/abstract-method/snapshots/1-TSESTree-Error.shot b/packages/ast-spec/src/expression/ObjectExpression/fixtures/_error_/abstract-method/snapshots/1-TSESTree-Error.shot new file mode 100644 index 000000000000..dc431453e57a --- /dev/null +++ b/packages/ast-spec/src/expression/ObjectExpression/fixtures/_error_/abstract-method/snapshots/1-TSESTree-Error.shot @@ -0,0 +1,7 @@ +// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html + +exports[`AST Fixtures > expression > ObjectExpression > _error_ > abstract-method > TSESTree - Error`] +TSError +> 1 | ({abstract method(){}}) + | ^^^^^^^^ 'abstract' modifier cannot be used here. + 2 | diff --git a/packages/ast-spec/src/expression/ObjectExpression/fixtures/_error_/abstract-method/snapshots/2-Babel-Error.shot b/packages/ast-spec/src/expression/ObjectExpression/fixtures/_error_/abstract-method/snapshots/2-Babel-Error.shot new file mode 100644 index 000000000000..b186e7ceed16 --- /dev/null +++ b/packages/ast-spec/src/expression/ObjectExpression/fixtures/_error_/abstract-method/snapshots/2-Babel-Error.shot @@ -0,0 +1,8 @@ +// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html + +exports[`AST Fixtures > expression > ObjectExpression > _error_ > abstract-method > Babel - Error`] +BabelError +> 1 | ({abstract method(){}}) + | ^ Unexpected token, expected "," (1:11) + 2 | + diff --git a/packages/ast-spec/src/expression/ObjectExpression/fixtures/_error_/abstract-method/snapshots/3-Alignment-Error.shot b/packages/ast-spec/src/expression/ObjectExpression/fixtures/_error_/abstract-method/snapshots/3-Alignment-Error.shot new file mode 100644 index 000000000000..2285aeb1e136 --- /dev/null +++ b/packages/ast-spec/src/expression/ObjectExpression/fixtures/_error_/abstract-method/snapshots/3-Alignment-Error.shot @@ -0,0 +1,4 @@ +// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html + +exports[`AST Fixtures > expression > ObjectExpression > _error_ > abstract-method > Error Alignment`] +Both errored diff --git a/packages/typescript-estree/src/check-modifiers.ts b/packages/typescript-estree/src/check-modifiers.ts index 1a21288347eb..b25956b8064f 100644 --- a/packages/typescript-estree/src/check-modifiers.ts +++ b/packages/typescript-estree/src/check-modifiers.ts @@ -371,5 +371,18 @@ export function checkModifiers(node: ts.Node): void { ); } } + + // There are more cases in `checkGrammarObjectLiteralExpression` in TypeScript. + // We may add more validations for them here in the future. + if ( + modifier.kind === SyntaxKind.AbstractKeyword && + node.kind === SyntaxKind.MethodDeclaration && + node.parent.kind === SyntaxKind.ObjectLiteralExpression + ) { + throwError( + modifier, + `'${ts.tokenToString(modifier.kind)}' modifier cannot be used here.`, + ); + } } }