Skip to content

Commit 102324b

Browse files
committed
If the there is no change detected in module resolution we shouldnt need to update last cached unresolved imports just because we have new program
1 parent b93051a commit 102324b

25 files changed

Lines changed: 9 additions & 133 deletions

src/server/project.ts

Lines changed: 9 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -786,19 +786,19 @@ export abstract class Project implements LanguageServiceHost, ModuleResolutionHo
786786

787787
/** @internal */
788788
resolveModuleNameLiterals(moduleLiterals: readonly StringLiteralLike[], containingFile: string, redirectedReference: ResolvedProjectReference | undefined, options: CompilerOptions, containingSourceFile: SourceFile, reusedNames: readonly StringLiteralLike[] | undefined): readonly ResolvedModuleWithFailedLookupLocations[] {
789-
let needsUpdate = this.recordChangesToUnresolvedImports && this.cachedUnresolvedImportsPerFile.has(this.toPath(containingFile));
789+
let invalidated = false;
790790
return this.resolutionCache.resolveModuleNameLiterals(
791791
moduleLiterals,
792792
containingFile,
793793
redirectedReference,
794794
options,
795795
containingSourceFile,
796796
reusedNames,
797-
needsUpdate ? (existing, current, path, name) => {
798-
if (!needsUpdate || isExternalModuleNameRelative(name)) return;
797+
this.recordChangesToUnresolvedImports ? (existing, current, path, name) => {
798+
if (invalidated || isExternalModuleNameRelative(name)) return;
799799
// If only unresolved flag is changed, update
800800
if ((existing && isUnresolvedOrResolvedToJs(existing)) === isUnresolvedOrResolvedToJs(current)) return;
801-
needsUpdate = false;
801+
invalidated = true;
802802
this.cachedUnresolvedImportsPerFile.delete(path);
803803
this.lastCachedUnresolvedImportsList = undefined;
804804
} : undefined,
@@ -1446,20 +1446,11 @@ export abstract class Project implements LanguageServiceHost, ModuleResolutionHo
14461446
this.recordChangesToUnresolvedImports = false;
14471447

14481448
if (useTypingsFromGlobalCache) {
1449-
// 1. no changes in structure, no changes in unresolved imports - do nothing
1450-
// 2. no changes in structure, unresolved imports were changed - collect unresolved imports for all files
1451-
// (can reuse cached imports for files that were not changed)
1452-
// 3. new files were added/removed, but compilation settings stays the same - collect unresolved imports for all new/modified files
1453-
// (can reuse cached imports for files that were not changed)
1454-
// 4. compilation settings were changed in the way that might affect module resolution - drop all caches and collect all data from the scratch
1455-
if (!this.lastCachedUnresolvedImportsList || hasNewProgram) {
1456-
this.lastCachedUnresolvedImportsList = getUnresolvedImports(
1457-
this.program!,
1458-
this.cachedUnresolvedImportsPerFile,
1459-
s => this.writeLog(s),
1460-
);
1461-
}
1462-
1449+
this.lastCachedUnresolvedImportsList ??= getUnresolvedImports(
1450+
this.program!,
1451+
this.cachedUnresolvedImportsPerFile,
1452+
s => this.writeLog(s),
1453+
);
14631454
this.enqueueInstallTypingsForProject(hasAddedorRemovedFiles);
14641455
}
14651456
else {

tests/baselines/reference/tsserver/fourslashServer/importSuggestionsCache_coreNodeModules.js

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2085,8 +2085,6 @@ Info seq [hh:mm:ss:mss] Files (5)
20852085
/node_modules/@types/node/index.d.ts Text-1 "declare module 'fs' {\n export function readFile(): void;\n}\ndeclare module 'util' {\n export function promisify(): void;\n}"
20862086

20872087
Info seq [hh:mm:ss:mss] -----------------------------------------------
2088-
Info seq [hh:mm:ss:mss] Calculating unresolved imports list of program:: Files:: 5
2089-
Info seq [hh:mm:ss:mss] Calculating unresolved imports list of program:: Files:: 5 Done: []
20902088
Info seq [hh:mm:ss:mss] getCompletionData: Get current token: *
20912089
Info seq [hh:mm:ss:mss] getCompletionData: Is inside comment: *
20922090
Info seq [hh:mm:ss:mss] getCompletionData: Get previous token: *
@@ -2731,8 +2729,6 @@ Info seq [hh:mm:ss:mss] Files (5)
27312729
/node_modules/@types/node/index.d.ts Text-1 "declare module 'fs' {\n export function readFile(): void;\n}\ndeclare module 'util' {\n export function promisify(): void;\n}"
27322730

27332731
Info seq [hh:mm:ss:mss] -----------------------------------------------
2734-
Info seq [hh:mm:ss:mss] Calculating unresolved imports list of program:: Files:: 5
2735-
Info seq [hh:mm:ss:mss] Calculating unresolved imports list of program:: Files:: 5 Done: []
27362732
Info seq [hh:mm:ss:mss] getCompletionData: Get current token: *
27372733
Info seq [hh:mm:ss:mss] getCompletionData: Is inside comment: *
27382734
Info seq [hh:mm:ss:mss] getCompletionData: Get previous token: *

tests/baselines/reference/tsserver/inferredProjects/inferred-projects-per-project-root-with-case-insensitive-system.js

Lines changed: 0 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -253,9 +253,6 @@ Info seq [hh:mm:ss:mss] Files (2)
253253
Root file specified for compilation
254254

255255
Info seq [hh:mm:ss:mss] -----------------------------------------------
256-
Info seq [hh:mm:ss:mss] Calculating unresolved imports list of program:: Files:: 2
257-
Info seq [hh:mm:ss:mss] New unresolvedImports for /a/file2.ts:: []
258-
Info seq [hh:mm:ss:mss] Calculating unresolved imports list of program:: Files:: 2 Done: []
259256
TI:: [hh:mm:ss:mss] Got install request
260257
{
261258
"projectName": "/dev/null/inferredProject1*",
@@ -939,9 +936,6 @@ Info seq [hh:mm:ss:mss] Files (1)
939936
Root file specified for compilation
940937

941938
Info seq [hh:mm:ss:mss] -----------------------------------------------
942-
Info seq [hh:mm:ss:mss] Calculating unresolved imports list of program:: Files:: 1
943-
Info seq [hh:mm:ss:mss] New unresolvedImports for /a/file1.ts:: []
944-
Info seq [hh:mm:ss:mss] Calculating unresolved imports list of program:: Files:: 1 Done: []
945939
TI:: [hh:mm:ss:mss] Got install request
946940
{
947941
"projectName": "/dev/null/inferredProject1*",
@@ -1146,9 +1140,6 @@ Info seq [hh:mm:ss:mss] Files (2)
11461140
Root file specified for compilation
11471141

11481142
Info seq [hh:mm:ss:mss] -----------------------------------------------
1149-
Info seq [hh:mm:ss:mss] Calculating unresolved imports list of program:: Files:: 2
1150-
Info seq [hh:mm:ss:mss] New unresolvedImports for /a/file2.ts:: []
1151-
Info seq [hh:mm:ss:mss] Calculating unresolved imports list of program:: Files:: 2 Done: []
11521143
TI:: [hh:mm:ss:mss] Got install request
11531144
{
11541145
"projectName": "/dev/null/inferredProject1*",
@@ -2069,9 +2060,6 @@ Info seq [hh:mm:ss:mss] Files (2)
20692060
Root file specified for compilation
20702061

20712062
Info seq [hh:mm:ss:mss] -----------------------------------------------
2072-
Info seq [hh:mm:ss:mss] Calculating unresolved imports list of program:: Files:: 2
2073-
Info seq [hh:mm:ss:mss] New unresolvedImports for /a/file2.ts:: []
2074-
Info seq [hh:mm:ss:mss] Calculating unresolved imports list of program:: Files:: 2 Done: []
20752063
TI:: [hh:mm:ss:mss] Got install request
20762064
{
20772065
"projectName": "/dev/null/inferredProject1*",
@@ -2755,9 +2743,6 @@ Info seq [hh:mm:ss:mss] Files (1)
27552743
Root file specified for compilation
27562744

27572745
Info seq [hh:mm:ss:mss] -----------------------------------------------
2758-
Info seq [hh:mm:ss:mss] Calculating unresolved imports list of program:: Files:: 1
2759-
Info seq [hh:mm:ss:mss] New unresolvedImports for /a/file1.ts:: []
2760-
Info seq [hh:mm:ss:mss] Calculating unresolved imports list of program:: Files:: 1 Done: []
27612746
TI:: [hh:mm:ss:mss] Got install request
27622747
{
27632748
"projectName": "/dev/null/inferredProject1*",
@@ -2962,9 +2947,6 @@ Info seq [hh:mm:ss:mss] Files (2)
29622947
Root file specified for compilation
29632948

29642949
Info seq [hh:mm:ss:mss] -----------------------------------------------
2965-
Info seq [hh:mm:ss:mss] Calculating unresolved imports list of program:: Files:: 2
2966-
Info seq [hh:mm:ss:mss] New unresolvedImports for /a/file2.ts:: []
2967-
Info seq [hh:mm:ss:mss] Calculating unresolved imports list of program:: Files:: 2 Done: []
29682950
TI:: [hh:mm:ss:mss] Got install request
29692951
{
29702952
"projectName": "/dev/null/inferredProject1*",

tests/baselines/reference/tsserver/inferredProjects/inferred-projects-per-project-root-with-case-sensitive-system.js

Lines changed: 0 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -253,9 +253,6 @@ Info seq [hh:mm:ss:mss] Files (2)
253253
Root file specified for compilation
254254

255255
Info seq [hh:mm:ss:mss] -----------------------------------------------
256-
Info seq [hh:mm:ss:mss] Calculating unresolved imports list of program:: Files:: 2
257-
Info seq [hh:mm:ss:mss] New unresolvedImports for /A/file2.ts:: []
258-
Info seq [hh:mm:ss:mss] Calculating unresolved imports list of program:: Files:: 2 Done: []
259256
TI:: [hh:mm:ss:mss] Got install request
260257
{
261258
"projectName": "/dev/null/inferredProject1*",
@@ -939,9 +936,6 @@ Info seq [hh:mm:ss:mss] Files (1)
939936
Root file specified for compilation
940937

941938
Info seq [hh:mm:ss:mss] -----------------------------------------------
942-
Info seq [hh:mm:ss:mss] Calculating unresolved imports list of program:: Files:: 1
943-
Info seq [hh:mm:ss:mss] New unresolvedImports for /a/file1.ts:: []
944-
Info seq [hh:mm:ss:mss] Calculating unresolved imports list of program:: Files:: 1 Done: []
945939
TI:: [hh:mm:ss:mss] Got install request
946940
{
947941
"projectName": "/dev/null/inferredProject1*",
@@ -2152,10 +2146,6 @@ Info seq [hh:mm:ss:mss] Files (2)
21522146
Root file specified for compilation
21532147
21542148
Info seq [hh:mm:ss:mss] -----------------------------------------------
2155-
Info seq [hh:mm:ss:mss] Calculating unresolved imports list of program:: Files:: 2
2156-
Info seq [hh:mm:ss:mss] New unresolvedImports for /a/file1.ts:: []
2157-
Info seq [hh:mm:ss:mss] New unresolvedImports for /A/file2.ts:: []
2158-
Info seq [hh:mm:ss:mss] Calculating unresolved imports list of program:: Files:: 2 Done: []
21592149
TI:: [hh:mm:ss:mss] Got install request
21602150
{
21612151
"projectName": "/dev/null/inferredProject1*",
@@ -2839,9 +2829,6 @@ Info seq [hh:mm:ss:mss] Files (1)
28392829
Root file specified for compilation
28402830
28412831
Info seq [hh:mm:ss:mss] -----------------------------------------------
2842-
Info seq [hh:mm:ss:mss] Calculating unresolved imports list of program:: Files:: 1
2843-
Info seq [hh:mm:ss:mss] New unresolvedImports for /a/file1.ts:: []
2844-
Info seq [hh:mm:ss:mss] Calculating unresolved imports list of program:: Files:: 1 Done: []
28452832
TI:: [hh:mm:ss:mss] Got install request
28462833
{
28472834
"projectName": "/dev/null/inferredProject1*",

tests/baselines/reference/tsserver/inferredProjects/inferred-projects-per-project-root.js

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -253,9 +253,6 @@ Info seq [hh:mm:ss:mss] Files (2)
253253
Root file specified for compilation
254254

255255
Info seq [hh:mm:ss:mss] -----------------------------------------------
256-
Info seq [hh:mm:ss:mss] Calculating unresolved imports list of program:: Files:: 2
257-
Info seq [hh:mm:ss:mss] New unresolvedImports for /a/file2.ts:: []
258-
Info seq [hh:mm:ss:mss] Calculating unresolved imports list of program:: Files:: 2 Done: []
259256
TI:: [hh:mm:ss:mss] Got install request
260257
{
261258
"projectName": "/dev/null/inferredProject1*",

tests/baselines/reference/tsserver/inferredProjects/should-still-retain-configured-project-created-while-opening-the-file.js

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -436,9 +436,6 @@ Info seq [hh:mm:ss:mss] Files (2)
436436
Root file specified for compilation
437437
438438
Info seq [hh:mm:ss:mss] -----------------------------------------------
439-
Info seq [hh:mm:ss:mss] Calculating unresolved imports list of program:: Files:: 2
440-
Info seq [hh:mm:ss:mss] New unresolvedImports for /user/username/projects/myproject/jsfile2.js:: []
441-
Info seq [hh:mm:ss:mss] Calculating unresolved imports list of program:: Files:: 2 Done: []
442439
TI:: [hh:mm:ss:mss] Got install request
443440
{
444441
"projectName": "/dev/null/inferredProject1*",

tests/baselines/reference/tsserver/projectErrors/reports-errors-correctly-when-file-referenced-by-inferred-project-root,-is-opened-right-after-closing-the-root-file.js

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -293,10 +293,6 @@ Info seq [hh:mm:ss:mss] Files (4)
293293
Root file specified for compilation
294294

295295
Info seq [hh:mm:ss:mss] -----------------------------------------------
296-
Info seq [hh:mm:ss:mss] Calculating unresolved imports list of program:: Files:: 4
297-
Info seq [hh:mm:ss:mss] New unresolvedImports for /user/username/projects/myproject/src/server/utilities.js:: []
298-
Info seq [hh:mm:ss:mss] New unresolvedImports for /user/username/projects/myproject/test/backend/index.js:: []
299-
Info seq [hh:mm:ss:mss] Calculating unresolved imports list of program:: Files:: 4 Done: []
300296
TI:: [hh:mm:ss:mss] Got install request
301297
{
302298
"projectName": "/dev/null/inferredProject1*",
@@ -704,8 +700,6 @@ Info seq [hh:mm:ss:mss] Files (2)
704700
Root file specified for compilation
705701

706702
Info seq [hh:mm:ss:mss] -----------------------------------------------
707-
Info seq [hh:mm:ss:mss] Calculating unresolved imports list of program:: Files:: 2
708-
Info seq [hh:mm:ss:mss] Calculating unresolved imports list of program:: Files:: 2 Done: []
709703
TI:: [hh:mm:ss:mss] Got install request
710704
{
711705
"projectName": "/dev/null/inferredProject1*",
@@ -821,8 +815,6 @@ Info seq [hh:mm:ss:mss] Files (3)
821815
Root file specified for compilation
822816

823817
Info seq [hh:mm:ss:mss] -----------------------------------------------
824-
Info seq [hh:mm:ss:mss] Calculating unresolved imports list of program:: Files:: 3
825-
Info seq [hh:mm:ss:mss] Calculating unresolved imports list of program:: Files:: 3 Done: []
826818
TI:: [hh:mm:ss:mss] Got install request
827819
{
828820
"projectName": "/dev/null/inferredProject1*",

tests/baselines/reference/tsserver/typeAquisition/changes-to-typeAquisition-when-typing-installer-installs-typing.js

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -693,8 +693,6 @@ Info seq [hh:mm:ss:mss] Files (2)
693693
/users/user/projects/project1/app.js SVC-1-0 "var x = require('bar');"
694694
695695
Info seq [hh:mm:ss:mss] -----------------------------------------------
696-
Info seq [hh:mm:ss:mss] Calculating unresolved imports list of program:: Files:: 2
697-
Info seq [hh:mm:ss:mss] Calculating unresolved imports list of program:: Files:: 2 Done: []
698696
Info seq [hh:mm:ss:mss] Running: *ensureProjectForOpenFiles*
699697
Info seq [hh:mm:ss:mss] Before ensureProjectForOpenFiles:
700698
Info seq [hh:mm:ss:mss] Project '/users/user/projects/project1/jsconfig.json' (Configured)

tests/baselines/reference/tsserver/typingsInstaller/configured-projects-discover-from-bower_components.js

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -514,9 +514,6 @@ Info seq [hh:mm:ss:mss] Files (2)
514514
Matched by default include pattern '**/*'
515515

516516
Info seq [hh:mm:ss:mss] -----------------------------------------------
517-
Info seq [hh:mm:ss:mss] Calculating unresolved imports list of program:: Files:: 2
518-
Info seq [hh:mm:ss:mss] New unresolvedImports for /tmp/node_modules/@types/jquery/index.d.ts:: []
519-
Info seq [hh:mm:ss:mss] Calculating unresolved imports list of program:: Files:: 2 Done: []
520517
TI:: [hh:mm:ss:mss] Got install request
521518
{
522519
"projectName": "/jsconfig.json",

tests/baselines/reference/tsserver/typingsInstaller/configured-projects.js

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -474,9 +474,6 @@ Info seq [hh:mm:ss:mss] Files (2)
474474
Matched by default include pattern '**/*'
475475

476476
Info seq [hh:mm:ss:mss] -----------------------------------------------
477-
Info seq [hh:mm:ss:mss] Calculating unresolved imports list of program:: Files:: 2
478-
Info seq [hh:mm:ss:mss] New unresolvedImports for /a/data/node_modules/@types/jquery/index.d.ts:: []
479-
Info seq [hh:mm:ss:mss] Calculating unresolved imports list of program:: Files:: 2 Done: []
480477
TI:: [hh:mm:ss:mss] Got install request
481478
{
482479
"projectName": "/a/b/tsconfig.json",

0 commit comments

Comments
 (0)