diff --git a/packages/eslint-plugin/src/rules/no-deprecated.ts b/packages/eslint-plugin/src/rules/no-deprecated.ts index 7fb966a249b0..5812bec7ed9d 100644 --- a/packages/eslint-plugin/src/rules/no-deprecated.ts +++ b/packages/eslint-plugin/src/rules/no-deprecated.ts @@ -312,9 +312,17 @@ export default createRule({ const property = services .getTypeAtLocation(node.parent.parent) .getProperty(node.name); - const symbol = services.getSymbolAtLocation(node); - return getJsDocDeprecation(property) ?? getJsDocDeprecation(symbol); + const propertySymbol = services.getSymbolAtLocation(node); + const valueSymbol = checker.getShorthandAssignmentValueSymbol( + propertySymbol?.valueDeclaration, + ); + return ( + getJsDocDeprecation(property) ?? + getJsDocDeprecation(propertySymbol) ?? + getJsDocDeprecation(valueSymbol) + ); } + return searchForDeprecationInAliasesChain( services.getSymbolAtLocation(node), true, diff --git a/packages/eslint-plugin/tests/rules/no-deprecated.test.ts b/packages/eslint-plugin/tests/rules/no-deprecated.test.ts index 39f3947891ef..764177e56cf9 100644 --- a/packages/eslint-plugin/tests/rules/no-deprecated.test.ts +++ b/packages/eslint-plugin/tests/rules/no-deprecated.test.ts @@ -312,6 +312,10 @@ ruleTester.run('no-deprecated', rule, { } ; `, + ` + declare const test: string; + const bar = { test }; + `, ], invalid: [ { @@ -711,6 +715,25 @@ ruleTester.run('no-deprecated', rule, { }, ], }, + { + code: ` + /** @deprecated */ + declare const test: string; + const bar = { + test, + }; + `, + errors: [ + { + column: 11, + data: { name: 'test' }, + endColumn: 15, + endLine: 5, + line: 5, + messageId: 'deprecated', + }, + ], + }, { code: ` /** @deprecated */ const a = { b: 1 };