Skip to content

Commit e3bee90

Browse files
committed
Update the unresolved import list only if it will be used
1 parent 77ab17f commit e3bee90

1,241 files changed

Lines changed: 2257 additions & 12420 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

src/server/project.ts

Lines changed: 23 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -798,7 +798,14 @@ export abstract class Project implements LanguageServiceHost, ModuleResolutionHo
798798

799799
/** @internal */
800800
resolveModuleNameLiterals(moduleLiterals: readonly StringLiteralLike[], containingFile: string, redirectedReference: ResolvedProjectReference | undefined, options: CompilerOptions, containingSourceFile: SourceFile, reusedNames: readonly StringLiteralLike[] | undefined): readonly ResolvedModuleWithFailedLookupLocations[] {
801-
return this.resolutionCache.resolveModuleNameLiterals(moduleLiterals, containingFile, redirectedReference, options, containingSourceFile, reusedNames);
801+
return this.resolutionCache.resolveModuleNameLiterals(
802+
moduleLiterals,
803+
containingFile,
804+
redirectedReference,
805+
options,
806+
containingSourceFile,
807+
reusedNames,
808+
);
802809
}
803810

804811
/** @internal */
@@ -1427,9 +1434,11 @@ export abstract class Project implements LanguageServiceHost, ModuleResolutionHo
14271434

14281435
/** @internal */
14291436
useTypingsFromGlobalCache(): boolean {
1430-
return this.languageServiceEnabled &&
1437+
return !this.isOrphan() &&
1438+
!!this.languageServiceEnabled &&
14311439
this.projectService.serverMode === LanguageServiceMode.Semantic &&
1432-
!this.isOrphan();
1440+
this.projectService.typingsInstaller !== nullTypingsInstaller &&
1441+
!!this.getTypeAcquisition().enable;
14331442
}
14341443

14351444
/**
@@ -1438,30 +1447,27 @@ export abstract class Project implements LanguageServiceHost, ModuleResolutionHo
14381447
*/
14391448
updateGraph(): boolean {
14401449
tracing?.push(tracing.Phase.Session, "updateGraph", { name: this.projectName, kind: ProjectKind[this.projectKind] });
1441-
this.resolutionCache.startRecordingFilesWithChangedResolutions();
1450+
const recordChangesToResolution = this.useTypingsFromGlobalCache();
1451+
if (recordChangesToResolution && this.cachedUnresolvedImportsPerFile.size) this.resolutionCache.startRecordingFilesWithChangedResolutions();
14421452

14431453
const hasNewProgram = this.updateGraphWorker();
14441454
const hasAddedorRemovedFiles = this.hasAddedorRemovedFiles;
14451455
this.hasAddedorRemovedFiles = false;
14461456
this.hasAddedOrRemovedSymlinks = false;
14471457

1448-
const changedFiles: readonly Path[] = this.resolutionCache.finishRecordingFilesWithChangedResolutions() || emptyArray;
1449-
1450-
for (const file of changedFiles) {
1451-
// delete cached information for changed files
1452-
this.cachedUnresolvedImportsPerFile.delete(file);
1453-
}
1454-
1455-
// update builder only if language service is enabled
1456-
// otherwise tell it to drop its internal state
1457-
if (this.useTypingsFromGlobalCache()) {
1458+
if (recordChangesToResolution) {
1459+
const changedFiles: readonly Path[] = this.resolutionCache.finishRecordingFilesWithChangedResolutions() || emptyArray;
1460+
for (const file of changedFiles) {
1461+
// delete cached information for changed files
1462+
this.cachedUnresolvedImportsPerFile.delete(file);
1463+
}
14581464
// 1. no changes in structure, no changes in unresolved imports - do nothing
14591465
// 2. no changes in structure, unresolved imports were changed - collect unresolved imports for all files
14601466
// (can reuse cached imports for files that were not changed)
14611467
// 3. new files were added/removed, but compilation settings stays the same - collect unresolved imports for all new/modified files
14621468
// (can reuse cached imports for files that were not changed)
14631469
// 4. compilation settings were changed in the way that might affect module resolution - drop all caches and collect all data from the scratch
1464-
if (hasNewProgram || changedFiles.length) {
1470+
if (!this.lastCachedUnresolvedImportsList || hasNewProgram || changedFiles.length) {
14651471
this.lastCachedUnresolvedImportsList = getUnresolvedImports(
14661472
this.program!,
14671473
this.cachedUnresolvedImportsPerFile,
@@ -1473,6 +1479,8 @@ export abstract class Project implements LanguageServiceHost, ModuleResolutionHo
14731479
}
14741480
else {
14751481
this.lastCachedUnresolvedImportsList = undefined;
1482+
this.cachedUnresolvedImportsPerFile.clear();
1483+
this.typingsCache = undefined;
14761484
}
14771485
this.projectService.verifyUnresovedImports(this);
14781486

tests/baselines/reference/tsserver/applyChangesToOpenFiles/with-applyChangedToOpenFiles-request.js

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -100,13 +100,6 @@ Info seq [hh:mm:ss:mss] Files (5)
100100
Matched by default include pattern '**/*'
101101

102102
Info seq [hh:mm:ss:mss] -----------------------------------------------
103-
Info seq [hh:mm:ss:mss] getUnresolvedImports:: Files:: 5
104-
Info seq [hh:mm:ss:mss] extractUnresolvedImportsFromSourceFile:: /home/src/tslibs/ts/lib/lib.d.ts:: []
105-
Info seq [hh:mm:ss:mss] extractUnresolvedImportsFromSourceFile:: /user/username/projects/project/app.ts:: []
106-
Info seq [hh:mm:ss:mss] extractUnresolvedImportsFromSourceFile:: /user/username/projects/project/commonfile1.ts:: []
107-
Info seq [hh:mm:ss:mss] extractUnresolvedImportsFromSourceFile:: /user/username/projects/project/commonfile2.ts:: []
108-
Info seq [hh:mm:ss:mss] extractUnresolvedImportsFromSourceFile:: /user/username/projects/project/file3.ts:: []
109-
Info seq [hh:mm:ss:mss] getUnresolvedImports:: Files:: 5 Done: []
110103
Info seq [hh:mm:ss:mss] event:
111104
{
112105
"seq": 0,

tests/baselines/reference/tsserver/applyChangesToOpenFiles/with-updateOpen-request.js

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -100,13 +100,6 @@ Info seq [hh:mm:ss:mss] Files (5)
100100
Matched by default include pattern '**/*'
101101

102102
Info seq [hh:mm:ss:mss] -----------------------------------------------
103-
Info seq [hh:mm:ss:mss] getUnresolvedImports:: Files:: 5
104-
Info seq [hh:mm:ss:mss] extractUnresolvedImportsFromSourceFile:: /home/src/tslibs/ts/lib/lib.d.ts:: []
105-
Info seq [hh:mm:ss:mss] extractUnresolvedImportsFromSourceFile:: /user/username/projects/project/app.ts:: []
106-
Info seq [hh:mm:ss:mss] extractUnresolvedImportsFromSourceFile:: /user/username/projects/project/commonfile1.ts:: []
107-
Info seq [hh:mm:ss:mss] extractUnresolvedImportsFromSourceFile:: /user/username/projects/project/commonfile2.ts:: []
108-
Info seq [hh:mm:ss:mss] extractUnresolvedImportsFromSourceFile:: /user/username/projects/project/file3.ts:: []
109-
Info seq [hh:mm:ss:mss] getUnresolvedImports:: Files:: 5 Done: []
110103
Info seq [hh:mm:ss:mss] event:
111104
{
112105
"seq": 0,

tests/baselines/reference/tsserver/autoImportProvider/Auto-importable-file-is-in-inferred-project-until-imported.js

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -390,11 +390,6 @@ Info seq [hh:mm:ss:mss] Files (3)
390390
Matched by default include pattern '**/*'
391391

392392
Info seq [hh:mm:ss:mss] -----------------------------------------------
393-
Info seq [hh:mm:ss:mss] getUnresolvedImports:: Files:: 3
394-
Info seq [hh:mm:ss:mss] extractUnresolvedImportsFromSourceFile:: /home/src/tslibs/ts/lib/lib.d.ts:: []
395-
Info seq [hh:mm:ss:mss] extractUnresolvedImportsFromSourceFile:: /user/username/projects/project/node_modules/@angular/forms/forms.d.ts:: []
396-
Info seq [hh:mm:ss:mss] extractUnresolvedImportsFromSourceFile:: /user/username/projects/project/index.ts:: []
397-
Info seq [hh:mm:ss:mss] getUnresolvedImports:: Files:: 3 Done: []
398393
Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /user/username/projects/project/package.json 250 undefined WatchType: package.json file
399394
Info seq [hh:mm:ss:mss] event:
400395
{

tests/baselines/reference/tsserver/autoImportProvider/Closes-AutoImportProviderProject-when-host-project-closes.js

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -110,10 +110,6 @@ Info seq [hh:mm:ss:mss] Files (2)
110110
Matched by default include pattern '**/*'
111111
112112
Info seq [hh:mm:ss:mss] -----------------------------------------------
113-
Info seq [hh:mm:ss:mss] getUnresolvedImports:: Files:: 2
114-
Info seq [hh:mm:ss:mss] extractUnresolvedImportsFromSourceFile:: /home/src/tslibs/ts/lib/lib.d.ts:: []
115-
Info seq [hh:mm:ss:mss] extractUnresolvedImportsFromSourceFile:: /user/username/projects/project/index.ts:: []
116-
Info seq [hh:mm:ss:mss] getUnresolvedImports:: Files:: 2 Done: []
117113
Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /user/username/projects/project/package.json 250 undefined WatchType: package.json file
118114
Info seq [hh:mm:ss:mss] AutoImportProviderProject: found 1 root files in 1 dependencies 0 referenced projects in * ms
119115
Info seq [hh:mm:ss:mss] Creating AutoImportProviderProject: /dev/null/autoImportProviderProject1*, currentDirectory: /user/username/projects/project
@@ -386,10 +382,6 @@ Info seq [hh:mm:ss:mss] Files (2)
386382
Root file specified for compilation
387383
388384
Info seq [hh:mm:ss:mss] -----------------------------------------------
389-
Info seq [hh:mm:ss:mss] getUnresolvedImports:: Files:: 2
390-
Info seq [hh:mm:ss:mss] extractUnresolvedImportsFromSourceFile:: /home/src/tslibs/ts/lib/lib.d.ts:: []
391-
Info seq [hh:mm:ss:mss] extractUnresolvedImportsFromSourceFile:: /user/username/projects/project/random/random.ts:: []
392-
Info seq [hh:mm:ss:mss] getUnresolvedImports:: Files:: 2 Done: []
393385
Info seq [hh:mm:ss:mss] AutoImportProviderProject: found 1 root files in 1 dependencies 0 referenced projects in * ms
394386
Info seq [hh:mm:ss:mss] Creating AutoImportProviderProject: /dev/null/autoImportProviderProject2*, currentDirectory: /user/username/projects/project/random
395387
Info seq [hh:mm:ss:mss] Starting updateGraphWorker: Project: /dev/null/autoImportProviderProject2*

tests/baselines/reference/tsserver/autoImportProvider/Does-not-close-when-root-files-are-redirects-that-dont-actually-exist.js

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -136,10 +136,6 @@ Info seq [hh:mm:ss:mss] Files (2)
136136
Matched by default include pattern '**/*'
137137

138138
Info seq [hh:mm:ss:mss] -----------------------------------------------
139-
Info seq [hh:mm:ss:mss] getUnresolvedImports:: Files:: 2
140-
Info seq [hh:mm:ss:mss] extractUnresolvedImportsFromSourceFile:: /home/src/tslibs/ts/lib/lib.d.ts:: []
141-
Info seq [hh:mm:ss:mss] extractUnresolvedImportsFromSourceFile:: /user/username/projects/project/packages/a/index.ts:: []
142-
Info seq [hh:mm:ss:mss] getUnresolvedImports:: Files:: 2 Done: []
143139
Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /user/username/projects/project/packages/a/package.json 250 undefined WatchType: package.json file
144140
Info seq [hh:mm:ss:mss] AutoImportProviderProject: found 1 root files in 1 dependencies 1 referenced projects in * ms
145141
Info seq [hh:mm:ss:mss] Creating AutoImportProviderProject: /dev/null/autoImportProviderProject1*, currentDirectory: /user/username/projects/project/packages/a

tests/baselines/reference/tsserver/autoImportProvider/Does-not-create-an-auto-import-provider-if-there-are-too-many-dependencies.js

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -175,10 +175,6 @@ Info seq [hh:mm:ss:mss] Files (2)
175175
Matched by default include pattern '**/*'
176176

177177
Info seq [hh:mm:ss:mss] -----------------------------------------------
178-
Info seq [hh:mm:ss:mss] getUnresolvedImports:: Files:: 2
179-
Info seq [hh:mm:ss:mss] extractUnresolvedImportsFromSourceFile:: /home/src/tslibs/ts/lib/lib.d.ts:: []
180-
Info seq [hh:mm:ss:mss] extractUnresolvedImportsFromSourceFile:: /user/username/projects/project/index.ts:: []
181-
Info seq [hh:mm:ss:mss] getUnresolvedImports:: Files:: 2 Done: []
182178
Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /user/username/projects/project/package.json 250 undefined WatchType: package.json file
183179
Info seq [hh:mm:ss:mss] event:
184180
{

tests/baselines/reference/tsserver/autoImportProvider/Does-not-create-auto-import-providers-upon-opening-projects-for-find-all-references.js

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -129,10 +129,6 @@ Info seq [hh:mm:ss:mss] Files (2)
129129
Matched by default include pattern '**/*'
130130
131131
Info seq [hh:mm:ss:mss] -----------------------------------------------
132-
Info seq [hh:mm:ss:mss] getUnresolvedImports:: Files:: 2
133-
Info seq [hh:mm:ss:mss] extractUnresolvedImportsFromSourceFile:: /home/src/tslibs/ts/lib/lib.d.ts:: []
134-
Info seq [hh:mm:ss:mss] extractUnresolvedImportsFromSourceFile:: /user/username/projects/project/packages/b/index.ts:: []
135-
Info seq [hh:mm:ss:mss] getUnresolvedImports:: Files:: 2 Done: []
136132
Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /user/username/projects/project/packages/b/package.json 250 undefined WatchType: package.json file
137133
Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /user/username/projects/project/package.json 250 undefined WatchType: package.json file
138134
Info seq [hh:mm:ss:mss] AutoImportProviderProject: found 1 root files in 1 dependencies 0 referenced projects in * ms
@@ -394,11 +390,6 @@ Info seq [hh:mm:ss:mss] Files (3)
394390
Matched by default include pattern '**/*'
395391
396392
Info seq [hh:mm:ss:mss] -----------------------------------------------
397-
Info seq [hh:mm:ss:mss] getUnresolvedImports:: Files:: 3
398-
Info seq [hh:mm:ss:mss] extractUnresolvedImportsFromSourceFile:: /home/src/tslibs/ts/lib/lib.d.ts:: []
399-
Info seq [hh:mm:ss:mss] extractUnresolvedImportsFromSourceFile:: /user/username/projects/project/packages/b/index.ts:: []
400-
Info seq [hh:mm:ss:mss] extractUnresolvedImportsFromSourceFile:: /user/username/projects/project/packages/a/index.ts:: []
401-
Info seq [hh:mm:ss:mss] getUnresolvedImports:: Files:: 3 Done: []
402393
Info seq [hh:mm:ss:mss] event:
403394
{
404395
"seq": 0,
@@ -499,11 +490,6 @@ Info seq [hh:mm:ss:mss] Files (3)
499490
Matched by default include pattern '**/*'
500491

501492
Info seq [hh:mm:ss:mss] -----------------------------------------------
502-
Info seq [hh:mm:ss:mss] getUnresolvedImports:: Files:: 3
503-
Info seq [hh:mm:ss:mss] extractUnresolvedImportsFromSourceFile:: /home/src/tslibs/ts/lib/lib.d.ts:: []
504-
Info seq [hh:mm:ss:mss] extractUnresolvedImportsFromSourceFile:: /user/username/projects/project/packages/b/index.ts:: []
505-
Info seq [hh:mm:ss:mss] extractUnresolvedImportsFromSourceFile:: /user/username/projects/project/packages/a/index.ts:: []
506-
Info seq [hh:mm:ss:mss] getUnresolvedImports:: Files:: 3 Done: []
507493
Info seq [hh:mm:ss:mss] event:
508494
{
509495
"seq": 0,

tests/baselines/reference/tsserver/autoImportProvider/Does-not-schedule-ensureProjectForOpenFiles-on-AutoImportProviderProject-creation.js

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -107,10 +107,6 @@ Info seq [hh:mm:ss:mss] Files (2)
107107
Matched by default include pattern '**/*'
108108

109109
Info seq [hh:mm:ss:mss] -----------------------------------------------
110-
Info seq [hh:mm:ss:mss] getUnresolvedImports:: Files:: 2
111-
Info seq [hh:mm:ss:mss] extractUnresolvedImportsFromSourceFile:: /home/src/tslibs/ts/lib/lib.d.ts:: []
112-
Info seq [hh:mm:ss:mss] extractUnresolvedImportsFromSourceFile:: /user/username/projects/project/index.ts:: []
113-
Info seq [hh:mm:ss:mss] getUnresolvedImports:: Files:: 2 Done: []
114110
Info seq [hh:mm:ss:mss] event:
115111
{
116112
"seq": 0,

tests/baselines/reference/tsserver/autoImportProvider/Recovers-from-an-unparseable-package_json.js

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -110,10 +110,6 @@ Info seq [hh:mm:ss:mss] Files (2)
110110
Matched by default include pattern '**/*'
111111

112112
Info seq [hh:mm:ss:mss] -----------------------------------------------
113-
Info seq [hh:mm:ss:mss] getUnresolvedImports:: Files:: 2
114-
Info seq [hh:mm:ss:mss] extractUnresolvedImportsFromSourceFile:: /home/src/tslibs/ts/lib/lib.d.ts:: []
115-
Info seq [hh:mm:ss:mss] extractUnresolvedImportsFromSourceFile:: /user/username/projects/project/index.ts:: []
116-
Info seq [hh:mm:ss:mss] getUnresolvedImports:: Files:: 2 Done: []
117113
Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /user/username/projects/project/package.json 250 undefined WatchType: package.json file
118114
Info seq [hh:mm:ss:mss] event:
119115
{

0 commit comments

Comments
 (0)