fix(40441): show deprecated error for deprecated property in namespace (#40605)

This commit is contained in:
Alex T
2020-09-30 18:26:35 +03:00
committed by GitHub
parent 2428ade1a9
commit df33dd593f
2 changed files with 35 additions and 3 deletions

View File

@@ -13702,7 +13702,7 @@ namespace ts {
if (propName !== undefined) {
const prop = getPropertyOfType(objectType, propName);
if (prop) {
if (reportDeprecated && accessNode && prop.valueDeclaration?.flags & NodeFlags.Deprecated && isUncalledFunctionReference(accessNode, prop)) {
if (reportDeprecated && accessNode && getDeclarationNodeFlagsFromSymbol(prop) & NodeFlags.Deprecated && isUncalledFunctionReference(accessNode, prop)) {
const deprecatedNode = accessExpression?.argumentExpression ?? (isIndexedAccessTypeNode(accessNode) ? accessNode.indexType : accessNode);
errorOrSuggestion(/* isError */ false, deprecatedNode, Diagnostics._0_is_deprecated, propName as string);
}
@@ -25691,10 +25691,9 @@ namespace ts {
propType = (compilerOptions.noUncheckedIndexedAccess && !isAssignmentTarget(node)) ? getUnionType([indexInfo.type, undefinedType]) : indexInfo.type;
}
else {
if (prop.valueDeclaration?.flags & NodeFlags.Deprecated && isUncalledFunctionReference(node, prop)) {
if (getDeclarationNodeFlagsFromSymbol(prop) & NodeFlags.Deprecated && isUncalledFunctionReference(node, prop)) {
errorOrSuggestion(/* isError */ false, right, Diagnostics._0_is_deprecated, right.escapedText as string);
}
checkPropertyNotUsedBeforeDeclaration(prop, node, right);
markPropertyAsReferenced(prop, node, left.kind === SyntaxKind.ThisKeyword);
getNodeLinks(node).resolvedSymbol = prop;

View File

@@ -0,0 +1,33 @@
///<reference path="fourslash.ts" />
// @filename: foo.ts
////export namespace foo {
//// /** @deprecated */
//// export const bar = 1;
//// [|bar|];
////}
////foo.[|bar|];
////foo[[|"bar"|]];
goTo.file('foo.ts');
const ranges = test.ranges();
verify.getSuggestionDiagnostics([
{
"code": 6385,
"message": "'bar' is deprecated",
"reportsDeprecated": true,
"range": ranges[0]
},
{
"code": 6385,
"message": "'bar' is deprecated",
"reportsDeprecated": true,
"range": ranges[1]
},
{
"code": 6385,
"message": "'bar' is deprecated",
"reportsDeprecated": true,
"range": ranges[2]
},
]);