@@ -217,7 +217,8 @@ namespace ts.Completions {
217
217
position : number ,
218
218
preferences : UserPreferences ,
219
219
triggerCharacter : CompletionsTriggerCharacter | undefined ,
220
- completionKind ?: CompletionTriggerKind ,
220
+ completionKind : CompletionTriggerKind | undefined ,
221
+ cancellationToken : CancellationToken ,
221
222
) : CompletionInfo | undefined {
222
223
const { previousToken } = getRelevantTokens ( position , sourceFile ) ;
223
224
if ( triggerCharacter && ! isInString ( sourceFile , position , previousToken ) && ! isValidTrigger ( sourceFile , triggerCharacter , previousToken , position ) ) {
@@ -239,7 +240,7 @@ namespace ts.Completions {
239
240
const compilerOptions = program . getCompilerOptions ( ) ;
240
241
const incompleteCompletionsCache = preferences . allowIncompleteCompletions ? host . getIncompleteCompletionsCache ?.( ) : undefined ;
241
242
if ( incompleteCompletionsCache && completionKind === CompletionTriggerKind . TriggerForIncompleteCompletions && previousToken && isIdentifier ( previousToken ) ) {
242
- const incompleteContinuation = continuePreviousIncompleteResponse ( incompleteCompletionsCache , sourceFile , previousToken , program , host , preferences ) ;
243
+ const incompleteContinuation = continuePreviousIncompleteResponse ( incompleteCompletionsCache , sourceFile , previousToken , program , host , preferences , cancellationToken ) ;
243
244
if ( incompleteContinuation ) {
244
245
return incompleteContinuation ;
245
246
}
@@ -258,7 +259,7 @@ namespace ts.Completions {
258
259
return getLabelCompletionAtPosition ( previousToken . parent ) ;
259
260
}
260
261
261
- const completionData = getCompletionData ( program , log , sourceFile , isUncheckedFile ( sourceFile , compilerOptions ) , position , preferences , /*detailsEntryId*/ undefined , host ) ;
262
+ const completionData = getCompletionData ( program , log , sourceFile , isUncheckedFile ( sourceFile , compilerOptions ) , position , preferences , /*detailsEntryId*/ undefined , host , cancellationToken ) ;
262
263
if ( ! completionData ) {
263
264
return undefined ;
264
265
}
@@ -292,12 +293,13 @@ namespace ts.Completions {
292
293
program : Program ,
293
294
host : LanguageServiceHost ,
294
295
preferences : UserPreferences ,
296
+ cancellationToken : CancellationToken ,
295
297
) : CompletionInfo | undefined {
296
298
const previousResponse = cache . get ( ) ;
297
299
if ( ! previousResponse ) return undefined ;
298
300
299
301
const lowerCaseTokenText = location . text . toLowerCase ( ) ;
300
- const exportMap = getExportInfoMap ( file , host , program ) ;
302
+ const exportMap = getExportInfoMap ( file , host , program , cancellationToken ) ;
301
303
const checker = program . getTypeChecker ( ) ;
302
304
const autoImportProvider = host . getPackageJsonAutoImportProvider ?.( ) ;
303
305
const autoImportProviderChecker = autoImportProvider ?. getTypeChecker ( ) ;
@@ -1202,7 +1204,8 @@ namespace ts.Completions {
1202
1204
position : number ,
1203
1205
preferences : UserPreferences ,
1204
1206
detailsEntryId : CompletionEntryIdentifier | undefined ,
1205
- host : LanguageServiceHost
1207
+ host : LanguageServiceHost ,
1208
+ cancellationToken ?: CancellationToken ,
1206
1209
) : CompletionData | Request | undefined {
1207
1210
const typeChecker = program . getTypeChecker ( ) ;
1208
1211
@@ -1914,7 +1917,8 @@ namespace ts.Completions {
1914
1917
1915
1918
const moduleSpecifierCache = host . getModuleSpecifierCache ?.( ) ;
1916
1919
const lowerCaseTokenText = previousToken && isIdentifier ( previousToken ) ? previousToken . text . toLowerCase ( ) : "" ;
1917
- const exportInfo = getExportInfoMap ( sourceFile , host , program ) ;
1920
+ const exportInfo = getExportInfoMap ( sourceFile , host , program , cancellationToken ) ;
1921
+
1918
1922
const packageJsonAutoImportProvider = host . getPackageJsonAutoImportProvider ?.( ) ;
1919
1923
const packageJsonFilter = detailsEntryId ? undefined : createPackageJsonImportFilter ( sourceFile , preferences , host ) ;
1920
1924
resolvingModuleSpecifiers (
@@ -1928,7 +1932,7 @@ namespace ts.Completions {
1928
1932
exportInfo . forEach ( sourceFile . path , ( info , symbolName , isFromAmbientModule ) => {
1929
1933
if ( ! detailsEntryId && isStringANonContextualKeyword ( symbolName ) ) return ;
1930
1934
const isCompletionDetailsMatch = detailsEntryId && some ( info , i => detailsEntryId . source === stripQuotes ( i . moduleSymbol . name ) ) ;
1931
- if ( isCompletionDetailsMatch || charactersFuzzyMatchInString ( symbolName , lowerCaseTokenText ) ) {
1935
+ if ( isCompletionDetailsMatch || ! detailsEntryId && charactersFuzzyMatchInString ( symbolName , lowerCaseTokenText ) ) {
1932
1936
const defaultExportInfo = find ( info , isImportableExportInfo ) ;
1933
1937
if ( ! defaultExportInfo ) {
1934
1938
return ;
0 commit comments