diff --git a/packages/eslint-plugin/src/rules/no-deprecated.ts b/packages/eslint-plugin/src/rules/no-deprecated.ts index 42eb522d3ca9..8eea3c8a1d35 100644 --- a/packages/eslint-plugin/src/rules/no-deprecated.ts +++ b/packages/eslint-plugin/src/rules/no-deprecated.ts @@ -152,9 +152,14 @@ export default createRule({ function getJsDocDeprecation( symbol: ts.Signature | ts.Symbol | undefined, ): string | undefined { - const tag = symbol - ?.getJsDocTags(checker) - .find(tag => tag.name === 'deprecated'); + let jsDocTags: ts.JSDocTagInfo[] | undefined; + try { + jsDocTags = symbol?.getJsDocTags(checker); + } catch { + // workaround for https://github.com/microsoft/TypeScript/issues/60024 + return; + } + const tag = jsDocTags?.find(tag => tag.name === 'deprecated'); if (!tag) { return undefined; diff --git a/packages/eslint-plugin/tests/rules/no-deprecated.test.ts b/packages/eslint-plugin/tests/rules/no-deprecated.test.ts index e8451d82b2cb..4b9798a4dbf0 100644 --- a/packages/eslint-plugin/tests/rules/no-deprecated.test.ts +++ b/packages/eslint-plugin/tests/rules/no-deprecated.test.ts @@ -253,6 +253,20 @@ ruleTester.run('no-deprecated', rule, { }, }, 'call();', + + // this test is to ensure the rule doesn't crash when class implements itself + // https://github.com/typescript-eslint/typescript-eslint/issues/10031 + ` + class Foo implements Foo { + get bar(): number { + return 42; + } + + baz(): number { + return this.bar; + } + } + `, ], invalid: [ {
Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.
Alternative Proxies: