fix: show deprecated error for alias (#40961)

This commit is contained in:
Alex T
2020-10-12 18:45:08 +03:00
committed by GitHub
parent ad3ae36fdc
commit 05be3b421a
2 changed files with 32 additions and 4 deletions

View File

@@ -22738,11 +22738,12 @@ namespace ts {
}
const localOrExportSymbol = getExportSymbolOfValueSymbolIfExported(symbol);
let declaration: Declaration | undefined = localOrExportSymbol.valueDeclaration;
if (declaration && getCombinedNodeFlags(declaration) & NodeFlags.Deprecated && isUncalledFunctionReference(node.parent, localOrExportSymbol)) {
errorOrSuggestion(/* isError */ false, node, Diagnostics._0_is_deprecated, node.escapedText as string);;
const sourceSymbol = localOrExportSymbol.flags & SymbolFlags.Alias ? resolveAlias(localOrExportSymbol) : localOrExportSymbol;
if (getDeclarationNodeFlagsFromSymbol(sourceSymbol) & NodeFlags.Deprecated && isUncalledFunctionReference(node.parent, sourceSymbol)) {
errorOrSuggestion(/* isError */ false, node, Diagnostics._0_is_deprecated, node.escapedText as string);
}
let declaration: Declaration | undefined = localOrExportSymbol.valueDeclaration;
if (localOrExportSymbol.flags & SymbolFlags.Class) {
// Due to the emit for class decorators, any reference to the class from inside of the class body
// must instead be rewritten to point to a temporary variable to avoid issues with the double-bind

View File

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