From b27d4bf3f6767ead65629073d4caf1ad7243e1a8 Mon Sep 17 00:00:00 2001 From: Jesse Trinity Date: Thu, 29 Oct 2020 13:30:42 -0700 Subject: [PATCH] noop in setTypeAcquisiton for undefined (#41291) * noop in setTypeAcquisiton for undefined * accept new baseline * add regression test --- src/server/project.ts | 8 ++++--- .../unittests/tsserver/inferredProjects.ts | 21 +++++++++++++++++++ .../reference/api/tsserverlibrary.d.ts | 2 +- 3 files changed, 27 insertions(+), 4 deletions(-) diff --git a/src/server/project.ts b/src/server/project.ts index 3b9d7cb11bf..1b18be8db98 100644 --- a/src/server/project.ts +++ b/src/server/project.ts @@ -706,10 +706,10 @@ namespace ts.server { return this.projectName; } - protected removeLocalTypingsFromTypeAcquisition(newTypeAcquisition: TypeAcquisition | undefined): TypeAcquisition { + protected removeLocalTypingsFromTypeAcquisition(newTypeAcquisition: TypeAcquisition): TypeAcquisition { if (!newTypeAcquisition || !newTypeAcquisition.include) { // Nothing to filter out, so just return as-is - return newTypeAcquisition || {}; + return newTypeAcquisition; } return { ...newTypeAcquisition, include: this.removeExistingTypings(newTypeAcquisition.include) }; } @@ -1410,7 +1410,9 @@ namespace ts.server { } setTypeAcquisition(newTypeAcquisition: TypeAcquisition | undefined): void { - this.typeAcquisition = this.removeLocalTypingsFromTypeAcquisition(newTypeAcquisition); + if (newTypeAcquisition) { + this.typeAcquisition = this.removeLocalTypingsFromTypeAcquisition(newTypeAcquisition); + } } getTypeAcquisition() { diff --git a/src/testRunner/unittests/tsserver/inferredProjects.ts b/src/testRunner/unittests/tsserver/inferredProjects.ts index 216273976e2..5bb545af0b5 100644 --- a/src/testRunner/unittests/tsserver/inferredProjects.ts +++ b/src/testRunner/unittests/tsserver/inferredProjects.ts @@ -429,5 +429,26 @@ namespace ts.projectSystem { configuredRemoved.clear(); } }); + + it("regression test - should infer typeAcquisition for inferred projects when set undefined", () => { + const file1 = { path: "/a/file1.js", content: "" }; + const host = createServerHost([file1]); + + const projectService = createProjectService(host); + + projectService.openClientFile(file1.path); + + checkNumberOfProjects(projectService, { inferredProjects: 1 }); + const inferredProject = projectService.inferredProjects[0]; + checkProjectActualFiles(inferredProject, [file1.path]); + inferredProject.setTypeAcquisition(undefined); + + const expected = { + enable: true, + include: [], + exclude: [] + }; + assert.deepEqual(inferredProject.getTypeAcquisition(), expected, "typeAcquisition should be inferred for inferred projects"); + }); }); } diff --git a/tests/baselines/reference/api/tsserverlibrary.d.ts b/tests/baselines/reference/api/tsserverlibrary.d.ts index 64b8136ef8e..95963d1ef5d 100644 --- a/tests/baselines/reference/api/tsserverlibrary.d.ts +++ b/tests/baselines/reference/api/tsserverlibrary.d.ts @@ -9307,7 +9307,7 @@ declare namespace ts.server { enableLanguageService(): void; disableLanguageService(lastFileExceededProgramSize?: string): void; getProjectName(): string; - protected removeLocalTypingsFromTypeAcquisition(newTypeAcquisition: TypeAcquisition | undefined): TypeAcquisition; + protected removeLocalTypingsFromTypeAcquisition(newTypeAcquisition: TypeAcquisition): TypeAcquisition; getExternalFiles(): SortedReadonlyArray; getSourceFile(path: Path): SourceFile | undefined; close(): void;