Do not create packagejson imports and auto import provider in partial semantic server mode (#40890)

This commit is contained in:
Sheetal Nandi 2020-10-02 10:59:04 -07:00 committed by GitHub
parent 5ecdcef4ce
commit fb2f3d4fd4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 36 additions and 0 deletions

View File

@ -1633,6 +1633,7 @@ namespace ts.server {
/*@internal*/
getPackageJsonsVisibleToFile(fileName: string, rootDir?: string): readonly PackageJsonInfo[] {
if (this.projectService.serverMode !== LanguageServiceMode.Semantic) return emptyArray;
return this.projectService.getPackageJsonsVisibleToFile(fileName, rootDir);
}
@ -1680,6 +1681,10 @@ namespace ts.server {
if (this.autoImportProviderHost === false) {
return undefined;
}
if (this.projectService.serverMode !== LanguageServiceMode.Semantic) {
this.autoImportProviderHost = false;
return undefined;
}
if (this.autoImportProviderHost) {
updateProjectIfDirty(this.autoImportProviderHost);
if (this.autoImportProviderHost.isEmpty()) {

View File

@ -172,5 +172,36 @@ function fooB() { }`
openFilesForSession([file2], session);
checkProjectActualFiles(project, [libFile.path, file2.path, file3.path]);
});
it("should not create autoImportProvider or handle package jsons", () => {
const angularFormsDts: File = {
path: "/node_modules/@angular/forms/forms.d.ts",
content: "export declare class PatternValidator {}",
};
const angularFormsPackageJson: File = {
path: "/node_modules/@angular/forms/package.json",
content: `{ "name": "@angular/forms", "typings": "./forms.d.ts" }`,
};
const tsconfig: File = {
path: "/tsconfig.json",
content: `{ "compilerOptions": { "module": "commonjs" } }`,
};
const packageJson: File = {
path: "/package.json",
content: `{ "dependencies": { "@angular/forms": "*", "@angular/core": "*" } }`
};
const indexTs: File = {
path: "/index.ts",
content: ""
};
const host = createServerHost([angularFormsDts, angularFormsPackageJson, tsconfig, packageJson, indexTs, libFile]);
const session = createSession(host, { serverMode: LanguageServiceMode.PartialSemantic, useSingleInferredProject: true });
const service = session.getProjectService();
openFilesForSession([indexTs], session);
const project = service.inferredProjects[0];
assert.isFalse(project.autoImportProviderHost);
assert.isUndefined(project.getPackageJsonAutoImportProvider());
assert.deepEqual(project.getPackageJsonsForAutoImport(), emptyArray);
});
});
}