Skip to content

Commit fb2f3d4

Browse files
authored
Do not create packagejson imports and auto import provider in partial semantic server mode (#40890)
1 parent 5ecdcef commit fb2f3d4

File tree

2 files changed

+36
-0
lines changed

2 files changed

+36
-0
lines changed

src/server/project.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1633,6 +1633,7 @@ namespace ts.server {
16331633

16341634
/*@internal*/
16351635
getPackageJsonsVisibleToFile(fileName: string, rootDir?: string): readonly PackageJsonInfo[] {
1636+
if (this.projectService.serverMode !== LanguageServiceMode.Semantic) return emptyArray;
16361637
return this.projectService.getPackageJsonsVisibleToFile(fileName, rootDir);
16371638
}
16381639

@@ -1680,6 +1681,10 @@ namespace ts.server {
16801681
if (this.autoImportProviderHost === false) {
16811682
return undefined;
16821683
}
1684+
if (this.projectService.serverMode !== LanguageServiceMode.Semantic) {
1685+
this.autoImportProviderHost = false;
1686+
return undefined;
1687+
}
16831688
if (this.autoImportProviderHost) {
16841689
updateProjectIfDirty(this.autoImportProviderHost);
16851690
if (this.autoImportProviderHost.isEmpty()) {

src/testRunner/unittests/tsserver/partialSemanticServer.ts

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -172,5 +172,36 @@ function fooB() { }`
172172
openFilesForSession([file2], session);
173173
checkProjectActualFiles(project, [libFile.path, file2.path, file3.path]);
174174
});
175+
176+
it("should not create autoImportProvider or handle package jsons", () => {
177+
const angularFormsDts: File = {
178+
path: "/node_modules/@angular/forms/forms.d.ts",
179+
content: "export declare class PatternValidator {}",
180+
};
181+
const angularFormsPackageJson: File = {
182+
path: "/node_modules/@angular/forms/package.json",
183+
content: `{ "name": "@angular/forms", "typings": "./forms.d.ts" }`,
184+
};
185+
const tsconfig: File = {
186+
path: "/tsconfig.json",
187+
content: `{ "compilerOptions": { "module": "commonjs" } }`,
188+
};
189+
const packageJson: File = {
190+
path: "/package.json",
191+
content: `{ "dependencies": { "@angular/forms": "*", "@angular/core": "*" } }`
192+
};
193+
const indexTs: File = {
194+
path: "/index.ts",
195+
content: ""
196+
};
197+
const host = createServerHost([angularFormsDts, angularFormsPackageJson, tsconfig, packageJson, indexTs, libFile]);
198+
const session = createSession(host, { serverMode: LanguageServiceMode.PartialSemantic, useSingleInferredProject: true });
199+
const service = session.getProjectService();
200+
openFilesForSession([indexTs], session);
201+
const project = service.inferredProjects[0];
202+
assert.isFalse(project.autoImportProviderHost);
203+
assert.isUndefined(project.getPackageJsonAutoImportProvider());
204+
assert.deepEqual(project.getPackageJsonsForAutoImport(), emptyArray);
205+
});
175206
});
176207
}

0 commit comments

Comments
 (0)