Skip to content

Commit 00a4c12

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 0e79849 commit 00a4c12

26 files changed

Lines changed: 9 additions & 137 deletions

src/server/project.ts

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

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

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

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

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3531,8 +3531,6 @@ Info seq [hh:mm:ss:mss] Files (5)
35313531
/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}"
35323532

35333533
Info seq [hh:mm:ss:mss] -----------------------------------------------
3534-
Info seq [hh:mm:ss:mss] getUnresolvedImports:: Files:: 5
3535-
Info seq [hh:mm:ss:mss] getUnresolvedImports:: Files:: 5 Done: []
35363534
Info seq [hh:mm:ss:mss] getCompletionData: Get current token: *
35373535
Info seq [hh:mm:ss:mss] getCompletionData: Is inside comment: *
35383536
Info seq [hh:mm:ss:mss] getCompletionData: Get previous token: *
@@ -4241,8 +4239,6 @@ Info seq [hh:mm:ss:mss] Files (5)
42414239
/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}"
42424240

42434241
Info seq [hh:mm:ss:mss] -----------------------------------------------
4244-
Info seq [hh:mm:ss:mss] getUnresolvedImports:: Files:: 5
4245-
Info seq [hh:mm:ss:mss] getUnresolvedImports:: Files:: 5 Done: []
42464242
Info seq [hh:mm:ss:mss] getCompletionData: Get current token: *
42474243
Info seq [hh:mm:ss:mss] getCompletionData: Is inside comment: *
42484244
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
@@ -274,9 +274,6 @@ Info seq [hh:mm:ss:mss] Files (2)
274274
Root file specified for compilation
275275

276276
Info seq [hh:mm:ss:mss] -----------------------------------------------
277-
Info seq [hh:mm:ss:mss] getUnresolvedImports:: Files:: 2
278-
Info seq [hh:mm:ss:mss] extractUnresolvedImportsFromSourceFile:: /a/file2.ts:: []
279-
Info seq [hh:mm:ss:mss] getUnresolvedImports:: Files:: 2 Done: []
280277
TI:: [hh:mm:ss:mss] Got install request
281278
{
282279
"projectName": "/dev/null/inferredProject1*",
@@ -1197,9 +1194,6 @@ Info seq [hh:mm:ss:mss] Files (1)
11971194
Root file specified for compilation
11981195

11991196
Info seq [hh:mm:ss:mss] -----------------------------------------------
1200-
Info seq [hh:mm:ss:mss] getUnresolvedImports:: Files:: 1
1201-
Info seq [hh:mm:ss:mss] extractUnresolvedImportsFromSourceFile:: /a/file1.ts:: []
1202-
Info seq [hh:mm:ss:mss] getUnresolvedImports:: Files:: 1 Done: []
12031197
TI:: [hh:mm:ss:mss] Got install request
12041198
{
12051199
"projectName": "/dev/null/inferredProject1*",
@@ -1449,9 +1443,6 @@ Info seq [hh:mm:ss:mss] Files (2)
14491443
Root file specified for compilation
14501444

14511445
Info seq [hh:mm:ss:mss] -----------------------------------------------
1452-
Info seq [hh:mm:ss:mss] getUnresolvedImports:: Files:: 2
1453-
Info seq [hh:mm:ss:mss] extractUnresolvedImportsFromSourceFile:: /a/file2.ts:: []
1454-
Info seq [hh:mm:ss:mss] getUnresolvedImports:: Files:: 2 Done: []
14551446
TI:: [hh:mm:ss:mss] Got install request
14561447
{
14571448
"projectName": "/dev/null/inferredProject1*",
@@ -2654,9 +2645,6 @@ Info seq [hh:mm:ss:mss] Files (2)
26542645
Root file specified for compilation
26552646

26562647
Info seq [hh:mm:ss:mss] -----------------------------------------------
2657-
Info seq [hh:mm:ss:mss] getUnresolvedImports:: Files:: 2
2658-
Info seq [hh:mm:ss:mss] extractUnresolvedImportsFromSourceFile:: /a/file2.ts:: []
2659-
Info seq [hh:mm:ss:mss] getUnresolvedImports:: Files:: 2 Done: []
26602648
TI:: [hh:mm:ss:mss] Got install request
26612649
{
26622650
"projectName": "/dev/null/inferredProject1*",
@@ -3577,9 +3565,6 @@ Info seq [hh:mm:ss:mss] Files (1)
35773565
Root file specified for compilation
35783566

35793567
Info seq [hh:mm:ss:mss] -----------------------------------------------
3580-
Info seq [hh:mm:ss:mss] getUnresolvedImports:: Files:: 1
3581-
Info seq [hh:mm:ss:mss] extractUnresolvedImportsFromSourceFile:: /a/file1.ts:: []
3582-
Info seq [hh:mm:ss:mss] getUnresolvedImports:: Files:: 1 Done: []
35833568
TI:: [hh:mm:ss:mss] Got install request
35843569
{
35853570
"projectName": "/dev/null/inferredProject1*",
@@ -3829,9 +3814,6 @@ Info seq [hh:mm:ss:mss] Files (2)
38293814
Root file specified for compilation
38303815

38313816
Info seq [hh:mm:ss:mss] -----------------------------------------------
3832-
Info seq [hh:mm:ss:mss] getUnresolvedImports:: Files:: 2
3833-
Info seq [hh:mm:ss:mss] extractUnresolvedImportsFromSourceFile:: /a/file2.ts:: []
3834-
Info seq [hh:mm:ss:mss] getUnresolvedImports:: Files:: 2 Done: []
38353817
TI:: [hh:mm:ss:mss] Got install request
38363818
{
38373819
"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
@@ -274,9 +274,6 @@ Info seq [hh:mm:ss:mss] Files (2)
274274
Root file specified for compilation
275275

276276
Info seq [hh:mm:ss:mss] -----------------------------------------------
277-
Info seq [hh:mm:ss:mss] getUnresolvedImports:: Files:: 2
278-
Info seq [hh:mm:ss:mss] extractUnresolvedImportsFromSourceFile:: /A/file2.ts:: []
279-
Info seq [hh:mm:ss:mss] getUnresolvedImports:: Files:: 2 Done: []
280277
TI:: [hh:mm:ss:mss] Got install request
281278
{
282279
"projectName": "/dev/null/inferredProject1*",
@@ -1197,9 +1194,6 @@ Info seq [hh:mm:ss:mss] Files (1)
11971194
Root file specified for compilation
11981195

11991196
Info seq [hh:mm:ss:mss] -----------------------------------------------
1200-
Info seq [hh:mm:ss:mss] getUnresolvedImports:: Files:: 1
1201-
Info seq [hh:mm:ss:mss] extractUnresolvedImportsFromSourceFile:: /a/file1.ts:: []
1202-
Info seq [hh:mm:ss:mss] getUnresolvedImports:: Files:: 1 Done: []
12031197
TI:: [hh:mm:ss:mss] Got install request
12041198
{
12051199
"projectName": "/dev/null/inferredProject1*",
@@ -2771,10 +2765,6 @@ Info seq [hh:mm:ss:mss] Files (2)
27712765
Root file specified for compilation
27722766
27732767
Info seq [hh:mm:ss:mss] -----------------------------------------------
2774-
Info seq [hh:mm:ss:mss] getUnresolvedImports:: Files:: 2
2775-
Info seq [hh:mm:ss:mss] extractUnresolvedImportsFromSourceFile:: /a/file1.ts:: []
2776-
Info seq [hh:mm:ss:mss] extractUnresolvedImportsFromSourceFile:: /A/file2.ts:: []
2777-
Info seq [hh:mm:ss:mss] getUnresolvedImports:: Files:: 2 Done: []
27782768
TI:: [hh:mm:ss:mss] Got install request
27792769
{
27802770
"projectName": "/dev/null/inferredProject1*",
@@ -3695,9 +3685,6 @@ Info seq [hh:mm:ss:mss] Files (1)
36953685
Root file specified for compilation
36963686
36973687
Info seq [hh:mm:ss:mss] -----------------------------------------------
3698-
Info seq [hh:mm:ss:mss] getUnresolvedImports:: Files:: 1
3699-
Info seq [hh:mm:ss:mss] extractUnresolvedImportsFromSourceFile:: /a/file1.ts:: []
3700-
Info seq [hh:mm:ss:mss] getUnresolvedImports:: Files:: 1 Done: []
37013688
TI:: [hh:mm:ss:mss] Got install request
37023689
{
37033690
"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
@@ -274,9 +274,6 @@ Info seq [hh:mm:ss:mss] Files (2)
274274
Root file specified for compilation
275275

276276
Info seq [hh:mm:ss:mss] -----------------------------------------------
277-
Info seq [hh:mm:ss:mss] getUnresolvedImports:: Files:: 2
278-
Info seq [hh:mm:ss:mss] extractUnresolvedImportsFromSourceFile:: /a/file2.ts:: []
279-
Info seq [hh:mm:ss:mss] getUnresolvedImports:: Files:: 2 Done: []
280277
TI:: [hh:mm:ss:mss] Got install request
281278
{
282279
"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
@@ -507,9 +507,6 @@ Info seq [hh:mm:ss:mss] Files (2)
507507
Root file specified for compilation
508508
509509
Info seq [hh:mm:ss:mss] -----------------------------------------------
510-
Info seq [hh:mm:ss:mss] getUnresolvedImports:: Files:: 2
511-
Info seq [hh:mm:ss:mss] extractUnresolvedImportsFromSourceFile:: /user/username/projects/myproject/jsfile2.js:: []
512-
Info seq [hh:mm:ss:mss] getUnresolvedImports:: Files:: 2 Done: []
513510
TI:: [hh:mm:ss:mss] Got install request
514511
{
515512
"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
@@ -318,10 +318,6 @@ Info seq [hh:mm:ss:mss] Files (4)
318318
Root file specified for compilation
319319

320320
Info seq [hh:mm:ss:mss] -----------------------------------------------
321-
Info seq [hh:mm:ss:mss] getUnresolvedImports:: Files:: 4
322-
Info seq [hh:mm:ss:mss] extractUnresolvedImportsFromSourceFile:: /user/username/projects/myproject/src/server/utilities.js:: []
323-
Info seq [hh:mm:ss:mss] extractUnresolvedImportsFromSourceFile:: /user/username/projects/myproject/test/backend/index.js:: []
324-
Info seq [hh:mm:ss:mss] getUnresolvedImports:: Files:: 4 Done: []
325321
TI:: [hh:mm:ss:mss] Got install request
326322
{
327323
"projectName": "/dev/null/inferredProject1*",
@@ -789,8 +785,6 @@ Info seq [hh:mm:ss:mss] Files (2)
789785
Root file specified for compilation
790786

791787
Info seq [hh:mm:ss:mss] -----------------------------------------------
792-
Info seq [hh:mm:ss:mss] getUnresolvedImports:: Files:: 2
793-
Info seq [hh:mm:ss:mss] getUnresolvedImports:: Files:: 2 Done: []
794788
TI:: [hh:mm:ss:mss] Got install request
795789
{
796790
"projectName": "/dev/null/inferredProject1*",
@@ -906,8 +900,6 @@ Info seq [hh:mm:ss:mss] Files (3)
906900
Root file specified for compilation
907901

908902
Info seq [hh:mm:ss:mss] -----------------------------------------------
909-
Info seq [hh:mm:ss:mss] getUnresolvedImports:: Files:: 3
910-
Info seq [hh:mm:ss:mss] getUnresolvedImports:: Files:: 3 Done: []
911903
TI:: [hh:mm:ss:mss] Got install request
912904
{
913905
"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
@@ -689,8 +689,6 @@ Info seq [hh:mm:ss:mss] Files (2)
689689
/users/user/projects/project1/app.js SVC-1-0 "var x = require('bar');"
690690
691691
Info seq [hh:mm:ss:mss] -----------------------------------------------
692-
Info seq [hh:mm:ss:mss] getUnresolvedImports:: Files:: 2
693-
Info seq [hh:mm:ss:mss] getUnresolvedImports:: Files:: 2 Done: []
694692
After running Timeout callback:: count: 2
695693
696694
PolledWatches::

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
@@ -549,9 +549,6 @@ Info seq [hh:mm:ss:mss] Files (2)
549549
Matched by default include pattern '**/*'
550550

551551
Info seq [hh:mm:ss:mss] -----------------------------------------------
552-
Info seq [hh:mm:ss:mss] getUnresolvedImports:: Files:: 2
553-
Info seq [hh:mm:ss:mss] extractUnresolvedImportsFromSourceFile:: /tmp/node_modules/@types/jquery/index.d.ts:: []
554-
Info seq [hh:mm:ss:mss] getUnresolvedImports:: Files:: 2 Done: []
555552
TI:: [hh:mm:ss:mss] Got install request
556553
{
557554
"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
@@ -498,9 +498,6 @@ Info seq [hh:mm:ss:mss] Files (2)
498498
Matched by default include pattern '**/*'
499499

500500
Info seq [hh:mm:ss:mss] -----------------------------------------------
501-
Info seq [hh:mm:ss:mss] getUnresolvedImports:: Files:: 2
502-
Info seq [hh:mm:ss:mss] extractUnresolvedImportsFromSourceFile:: /a/data/node_modules/@types/jquery/index.d.ts:: []
503-
Info seq [hh:mm:ss:mss] getUnresolvedImports:: Files:: 2 Done: []
504501
TI:: [hh:mm:ss:mss] Got install request
505502
{
506503
"projectName": "/a/b/tsconfig.json",

0 commit comments

Comments
 (0)