Skip to content

Commit

Permalink
Make sure that global module re-exports are short-cutted to be added …
Browse files Browse the repository at this point in the history
…to completions
  • Loading branch information
orta committed Oct 17, 2019
1 parent c40ddb1 commit 85010fa
Show file tree
Hide file tree
Showing 2 changed files with 7 additions and 8 deletions.
13 changes: 5 additions & 8 deletions src/services/completions.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1343,12 +1343,9 @@ namespace ts.Completions {
}

const symbolId = getSymbolId(symbol);
const existingSymbol = findLast(symbols, symbol => symbol.id === symbolId);
if (!existingSymbol) {
symbols.push(symbol);
symbolToOriginInfoMap[symbolId] = origin;
symbolToSortTextMap[symbolId] = SortText.AutoImportSuggestions;
}
symbols.push(symbol);
symbolToOriginInfoMap[symbolId] = origin;
symbolToSortTextMap[symbolId] = SortText.AutoImportSuggestions;
});
}
filterGlobalCompletion(symbols);
Expand Down Expand Up @@ -1468,7 +1465,7 @@ namespace ts.Completions {
}

/**
* Gathers symbols that can be imported from other files, deduplicating along the way. Symbols can be duplicates
* Gathers symbols that can be imported from other files, de-duplicating along the way. Symbols can be "duplicates"
* if re-exported from another module, e.g. `export { foo } from "./a"`. That syntax creates a fresh symbol, but
* it’s just an alias to the first, and both have the same name, so we generally want to filter those aliases out,
* if and only if the the first can be imported (it may be excluded due to package.json filtering in
Expand Down Expand Up @@ -1552,7 +1549,7 @@ namespace ts.Completions {
// Don't add another completion for `export =` of a symbol that's already global.
// So in `declare namespace foo {} declare module "foo" { export = foo; }`, there will just be the global completion for `foo`.
if (resolvedModuleSymbol !== moduleSymbol &&
every(resolvedModuleSymbol.declarations, d => !!d.getSourceFile().externalModuleIndicator)) {
every(resolvedModuleSymbol.declarations, d => !!d.getSourceFile().externalModuleIndicator && !findAncestor(d, isGlobalScopeAugmentation))) {
pushSymbol(resolvedModuleSymbol, moduleSymbol, /*skipFilter*/ true);
}

Expand Down
2 changes: 2 additions & 0 deletions tests/cases/fourslash/completionsRedeclareModuleAsGlobal.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
/// <reference path="fourslash.ts" />

// 32675 - if this fails there are two copies of assert in completions

// @esModuleInterop: true,
// @target: esnext

Expand Down

0 comments on commit 85010fa

Please sign in to comment.