@@ -1473,8 +1473,15 @@ namespace ts {
1473
1473
}
1474
1474
}
1475
1475
1476
+ /**
1477
+ * Indicates that a symbol is an alias that does not merge with a local declaration.
1478
+ */
1479
+ function isNonLocalAlias(symbol: Symbol, excludes = SymbolFlags.Value | SymbolFlags.Type | SymbolFlags.Namespace) {
1480
+ return symbol && (symbol.flags & (SymbolFlags.Alias | excludes)) === SymbolFlags.Alias;
1481
+ }
1482
+
1476
1483
function resolveSymbol(symbol: Symbol, dontResolveAlias?: boolean): Symbol {
1477
- const shouldResolve = !dontResolveAlias && symbol && symbol.flags & SymbolFlags.Alias && ! (symbol.flags & (SymbolFlags.Value | SymbolFlags.Type | SymbolFlags.Namespace) );
1484
+ const shouldResolve = !dontResolveAlias && isNonLocalAlias (symbol);
1478
1485
return shouldResolve ? resolveAlias(symbol) : symbol;
1479
1486
}
1480
1487
@@ -12020,7 +12027,9 @@ namespace ts {
12020
12027
return getTypeOfSymbol(symbol);
12021
12028
}
12022
12029
12023
- if (symbol.flags & SymbolFlags.Alias && !isInTypeQuery(node) && !isConstEnumOrConstEnumOnlyModule(resolveAlias(symbol))) {
12030
+ // We should only mark aliases as referenced if there isn't a local value declaration
12031
+ // for the symbol.
12032
+ if (isNonLocalAlias(symbol, /*excludes*/ SymbolFlags.Value) && !isInTypeQuery(node) && !isConstEnumOrConstEnumOnlyModule(resolveAlias(symbol))) {
12024
12033
markAliasSymbolAsReferenced(symbol);
12025
12034
}
12026
12035
@@ -22926,7 +22935,9 @@ namespace ts {
22926
22935
node = getParseTreeNode(node, isIdentifier);
22927
22936
if (node) {
22928
22937
const symbol = getReferencedValueSymbol(node);
22929
- if (symbol && symbol.flags & SymbolFlags.Alias) {
22938
+ // We should only get the declaration of an alias if there isn't a local value
22939
+ // declaration for the symbol
22940
+ if (isNonLocalAlias(symbol, /*excludes*/ SymbolFlags.Value)) {
22930
22941
return getDeclarationOfAliasSymbol(symbol);
22931
22942
}
22932
22943
}
0 commit comments