diff --git a/src/server/project.ts b/src/server/project.ts index e7bb3c857d3..08fd2e43dcb 100644 --- a/src/server/project.ts +++ b/src/server/project.ts @@ -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()) { diff --git a/src/testRunner/unittests/tsserver/partialSemanticServer.ts b/src/testRunner/unittests/tsserver/partialSemanticServer.ts index d821ccc1a36..2c8b8ed14b0 100644 --- a/src/testRunner/unittests/tsserver/partialSemanticServer.ts +++ b/src/testRunner/unittests/tsserver/partialSemanticServer.ts @@ -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); + }); }); }