Simplify forEachAlias to findAlias

This commit is contained in:
Andrew Branch committed 2019-07-29 10:21:34 -07:00
1 parent c3437d13ae
commit 8813f02877
1 file changed
+6 -9
+6 -9
View File
@@ -1351,7 +1351,7 @@ namespace ts.Completions {
if (typeChecker.getMergedSymbol(symbol.parent!) !== resolvedModuleSymbol) {
continue;
}
// If `!!d.name.originalKeywordKind`, this is `export { _break as break };` -- skip this and prefer the keyword completion.
// If this is `export { _break as break };` (a keyword) -- skip this and prefer the keyword completion.
if (some(symbol.declarations, d => isExportSpecifier(d) && !!d.propertyName && isIdentifierANonContextualKeyword(d.name))) {
continue;
}
@@ -1397,10 +1397,8 @@ namespace ts.Completions {
}
function getNearestExportSymbol(fromSymbol: Symbol) {
return forEachAlias(typeChecker, fromSymbol, alias => {
if (some(alias.declarations, d => isExportSpecifier(d) || !!d.localSymbol)) {
return alias;
}
return findAlias(typeChecker, fromSymbol, alias => {
return some(alias.declarations, d => isExportSpecifier(d) || !!d.localSymbol);
});
}
@@ -2330,12 +2328,11 @@ namespace ts.Completions {
return nodeIsMissing(left);
}
function forEachAlias<T>(typeChecker: TypeChecker, symbol: Symbol, predicateMapper: (symbol: Symbol) => T | undefined): T | undefined {
function findAlias(typeChecker: TypeChecker, symbol: Symbol, predicate: (symbol: Symbol) => boolean): Symbol | undefined {
let currentAlias: Symbol | undefined = symbol;
while (currentAlias.flags & SymbolFlags.Alias && (currentAlias = typeChecker.getImmediateAliasedSymbol(currentAlias))) {
const mappedValue = predicateMapper(currentAlias);
if (mappedValue) {
return mappedValue;
if (predicate(currentAlias)) {
return currentAlias;
}
}
}