Use map for configured project instead of the array
This commit is contained in:
parent
0572b15adc
commit
62663a10ba
|
@ -98,7 +98,7 @@ namespace ts.projectSystem {
|
|||
const projectService = session.getProjectService();
|
||||
openFilesForSession([file1], session);
|
||||
checkNumberOfProjects(projectService, { configuredProjects: 1 });
|
||||
const project = projectService.configuredProjects[0];
|
||||
const project = configuredProjectAt(projectService, 0);
|
||||
const compilerOptionsRequest = <server.protocol.CompilerOptionsDiagnosticsRequest>{
|
||||
type: "request",
|
||||
command: server.CommandNames.CompilerOptionsDiagnosticsFull,
|
||||
|
@ -141,7 +141,7 @@ namespace ts.projectSystem {
|
|||
const configuredProject = forEach(projectService.synchronizeProjectList([]), f => f.info.projectName === corruptedConfig.path && f);
|
||||
assert.isTrue(configuredProject !== undefined, "should find configured project");
|
||||
checkProjectErrors(configuredProject, []);
|
||||
const projectErrors = projectService.configuredProjects[0].getAllProjectErrors();
|
||||
const projectErrors = configuredProjectAt(projectService, 0).getAllProjectErrors();
|
||||
checkProjectErrorsWorker(projectErrors, [
|
||||
"'{' expected."
|
||||
]);
|
||||
|
@ -155,7 +155,7 @@ namespace ts.projectSystem {
|
|||
const configuredProject = forEach(projectService.synchronizeProjectList([]), f => f.info.projectName === corruptedConfig.path && f);
|
||||
assert.isTrue(configuredProject !== undefined, "should find configured project");
|
||||
checkProjectErrors(configuredProject, []);
|
||||
const projectErrors = projectService.configuredProjects[0].getAllProjectErrors();
|
||||
const projectErrors = configuredProjectAt(projectService, 0).getAllProjectErrors();
|
||||
checkProjectErrorsWorker(projectErrors, []);
|
||||
}
|
||||
});
|
||||
|
@ -186,7 +186,7 @@ namespace ts.projectSystem {
|
|||
const configuredProject = forEach(projectService.synchronizeProjectList([]), f => f.info.projectName === corruptedConfig.path && f);
|
||||
assert.isTrue(configuredProject !== undefined, "should find configured project");
|
||||
checkProjectErrors(configuredProject, []);
|
||||
const projectErrors = projectService.configuredProjects[0].getAllProjectErrors();
|
||||
const projectErrors = configuredProjectAt(projectService, 0).getAllProjectErrors();
|
||||
checkProjectErrorsWorker(projectErrors, []);
|
||||
}
|
||||
// break config and trigger watcher
|
||||
|
@ -196,7 +196,7 @@ namespace ts.projectSystem {
|
|||
const configuredProject = forEach(projectService.synchronizeProjectList([]), f => f.info.projectName === corruptedConfig.path && f);
|
||||
assert.isTrue(configuredProject !== undefined, "should find configured project");
|
||||
checkProjectErrors(configuredProject, []);
|
||||
const projectErrors = projectService.configuredProjects[0].getAllProjectErrors();
|
||||
const projectErrors = configuredProjectAt(projectService, 0).getAllProjectErrors();
|
||||
checkProjectErrorsWorker(projectErrors, [
|
||||
"'{' expected."
|
||||
]);
|
||||
|
|
|
@ -295,7 +295,7 @@ namespace ts.projectSystem {
|
|||
}
|
||||
|
||||
export function checkNumberOfConfiguredProjects(projectService: server.ProjectService, expected: number) {
|
||||
assert.equal(projectService.configuredProjects.length, expected, `expected ${expected} configured project(s)`);
|
||||
assert.equal(projectService.configuredProjects.size, expected, `expected ${expected} configured project(s)`);
|
||||
}
|
||||
|
||||
export function checkNumberOfExternalProjects(projectService: server.ProjectService, expected: number) {
|
||||
|
@ -312,6 +312,15 @@ namespace ts.projectSystem {
|
|||
checkNumberOfInferredProjects(projectService, count.inferredProjects || 0);
|
||||
}
|
||||
|
||||
export function configuredProjectAt(projectService: server.ProjectService, index: number) {
|
||||
const values = projectService.configuredProjects.values();
|
||||
while (index > 0) {
|
||||
values.next();
|
||||
index--;
|
||||
}
|
||||
return values.next().value;
|
||||
}
|
||||
|
||||
export function checkWatchedFiles(host: TestServerHost, expectedFiles: string[]) {
|
||||
checkMapKeys("watchedFiles", host.watchedFiles, expectedFiles);
|
||||
}
|
||||
|
@ -824,12 +833,12 @@ namespace ts.projectSystem {
|
|||
options: {}
|
||||
});
|
||||
service.checkNumberOfProjects({ configuredProjects: 1 });
|
||||
checkProjectActualFiles(service.configuredProjects[0], [upperCaseConfigFilePath]);
|
||||
checkProjectActualFiles(configuredProjectAt(service, 0), [upperCaseConfigFilePath]);
|
||||
|
||||
service.openClientFile(f1.path);
|
||||
service.checkNumberOfProjects({ configuredProjects: 1, inferredProjects: 1 });
|
||||
|
||||
checkProjectActualFiles(service.configuredProjects[0], [upperCaseConfigFilePath]);
|
||||
checkProjectActualFiles(configuredProjectAt(service, 0), [upperCaseConfigFilePath]);
|
||||
checkProjectActualFiles(service.inferredProjects[0], [f1.path]);
|
||||
});
|
||||
|
||||
|
@ -866,7 +875,7 @@ namespace ts.projectSystem {
|
|||
checkNumberOfInferredProjects(projectService, 0);
|
||||
checkNumberOfConfiguredProjects(projectService, 1);
|
||||
|
||||
const project = projectService.configuredProjects[0];
|
||||
const project = configuredProjectAt(projectService, 0);
|
||||
checkProjectActualFiles(project, [file1.path, libFile.path, file2.path, configFile.path]);
|
||||
checkProjectRootFiles(project, [file1.path, file2.path]);
|
||||
// watching all files except one that was open
|
||||
|
@ -922,7 +931,7 @@ namespace ts.projectSystem {
|
|||
checkWatchedDirectories(host, ["/a/b"], /*recursive*/ true);
|
||||
checkNumberOfConfiguredProjects(projectService, 1);
|
||||
|
||||
const project = projectService.configuredProjects[0];
|
||||
const project = configuredProjectAt(projectService, 0);
|
||||
checkProjectRootFiles(project, [commonFile1.path]);
|
||||
|
||||
// add a new ts file
|
||||
|
@ -949,7 +958,7 @@ namespace ts.projectSystem {
|
|||
projectService.openClientFile(commonFile2.path);
|
||||
|
||||
checkNumberOfConfiguredProjects(projectService, 1);
|
||||
const project = projectService.configuredProjects[0];
|
||||
const project = configuredProjectAt(projectService, 0);
|
||||
checkProjectRootFiles(project, [commonFile1.path]);
|
||||
checkNumberOfInferredProjects(projectService, 1);
|
||||
});
|
||||
|
@ -1024,7 +1033,7 @@ namespace ts.projectSystem {
|
|||
projectService.openClientFile(commonFile1.path);
|
||||
|
||||
checkNumberOfConfiguredProjects(projectService, 1);
|
||||
const project = projectService.configuredProjects[0];
|
||||
const project = configuredProjectAt(projectService, 0);
|
||||
checkProjectRootFiles(project, [commonFile1.path, commonFile2.path]);
|
||||
|
||||
// delete commonFile2
|
||||
|
@ -1085,7 +1094,7 @@ namespace ts.projectSystem {
|
|||
const projectService = createProjectService(host);
|
||||
projectService.openClientFile(commonFile1.path);
|
||||
|
||||
const project = projectService.configuredProjects[0];
|
||||
const project = configuredProjectAt(projectService, 0);
|
||||
checkProjectRootFiles(project, [commonFile1.path, commonFile2.path]);
|
||||
configFile.content = `{
|
||||
"compilerOptions": {},
|
||||
|
@ -1121,7 +1130,7 @@ namespace ts.projectSystem {
|
|||
|
||||
projectService.openClientFile(commonFile1.path);
|
||||
checkNumberOfConfiguredProjects(projectService, 1);
|
||||
const project = projectService.configuredProjects[0];
|
||||
const project = configuredProjectAt(projectService, 0);
|
||||
checkProjectRootFiles(project, [commonFile1.path, commonFile2.path]);
|
||||
projectService.openClientFile(excludedFile1.path);
|
||||
checkNumberOfInferredProjects(projectService, 1);
|
||||
|
@ -1157,7 +1166,7 @@ namespace ts.projectSystem {
|
|||
projectService.openClientFile(classicModuleFile.path);
|
||||
|
||||
checkNumberOfConfiguredProjects(projectService, 1);
|
||||
const project = projectService.configuredProjects[0];
|
||||
const project = configuredProjectAt(projectService, 0);
|
||||
checkProjectActualFiles(project, [file1.path, nodeModuleFile.path, configFile.path]);
|
||||
checkNumberOfInferredProjects(projectService, 1);
|
||||
|
||||
|
@ -1241,7 +1250,7 @@ namespace ts.projectSystem {
|
|||
const projectService = createProjectService(host);
|
||||
projectService.openClientFile(commonFile1.path);
|
||||
checkNumberOfConfiguredProjects(projectService, 1);
|
||||
checkProjectRootFiles(projectService.configuredProjects[0], [commonFile1.path, commonFile2.path]);
|
||||
checkProjectRootFiles(configuredProjectAt(projectService, 0), [commonFile1.path, commonFile2.path]);
|
||||
});
|
||||
|
||||
it("should disable features when the files are too large", () => {
|
||||
|
@ -1730,7 +1739,7 @@ namespace ts.projectSystem {
|
|||
host.reloadFS([file1, file2, file3, configFile]);
|
||||
host.checkTimeoutQueueLengthAndRun(1);
|
||||
checkNumberOfProjects(projectService, { configuredProjects: 1 });
|
||||
checkProjectActualFiles(projectService.configuredProjects[0], [file1.path, file2.path, file3.path, configFile.path]);
|
||||
checkProjectActualFiles(configuredProjectAt(projectService, 0), [file1.path, file2.path, file3.path, configFile.path]);
|
||||
});
|
||||
|
||||
it("correctly migrate files between projects", () => {
|
||||
|
@ -1788,14 +1797,14 @@ namespace ts.projectSystem {
|
|||
|
||||
projectService.openClientFile(file1.path);
|
||||
checkNumberOfProjects(projectService, { configuredProjects: 1 });
|
||||
checkProjectActualFiles(projectService.configuredProjects[0], [file1.path, configFile.path]);
|
||||
checkProjectActualFiles(configuredProjectAt(projectService, 0), [file1.path, configFile.path]);
|
||||
|
||||
host.reloadFS([file1, file2, configFile]);
|
||||
|
||||
host.checkTimeoutQueueLengthAndRun(2);
|
||||
|
||||
checkNumberOfProjects(projectService, { configuredProjects: 1 });
|
||||
checkProjectRootFiles(projectService.configuredProjects[0], [file1.path, file2.path]);
|
||||
checkProjectRootFiles(configuredProjectAt(projectService, 0), [file1.path, file2.path]);
|
||||
});
|
||||
|
||||
it("can correctly update configured project when set of root files has changed (new file in list of files)", () => {
|
||||
|
@ -1817,7 +1826,7 @@ namespace ts.projectSystem {
|
|||
|
||||
projectService.openClientFile(file1.path);
|
||||
checkNumberOfProjects(projectService, { configuredProjects: 1 });
|
||||
checkProjectActualFiles(projectService.configuredProjects[0], [file1.path, configFile.path]);
|
||||
checkProjectActualFiles(configuredProjectAt(projectService, 0), [file1.path, configFile.path]);
|
||||
|
||||
const modifiedConfigFile = {
|
||||
path: configFile.path,
|
||||
|
@ -1828,7 +1837,7 @@ namespace ts.projectSystem {
|
|||
|
||||
checkNumberOfProjects(projectService, { configuredProjects: 1 });
|
||||
host.checkTimeoutQueueLengthAndRun(2);
|
||||
checkProjectRootFiles(projectService.configuredProjects[0], [file1.path, file2.path]);
|
||||
checkProjectRootFiles(configuredProjectAt(projectService, 0), [file1.path, file2.path]);
|
||||
});
|
||||
|
||||
it("can update configured project when set of root files was not changed", () => {
|
||||
|
@ -1850,7 +1859,7 @@ namespace ts.projectSystem {
|
|||
|
||||
projectService.openClientFile(file1.path);
|
||||
checkNumberOfProjects(projectService, { configuredProjects: 1 });
|
||||
checkProjectActualFiles(projectService.configuredProjects[0], [file1.path, file2.path, configFile.path]);
|
||||
checkProjectActualFiles(configuredProjectAt(projectService, 0), [file1.path, file2.path, configFile.path]);
|
||||
|
||||
const modifiedConfigFile = {
|
||||
path: configFile.path,
|
||||
|
@ -1860,7 +1869,7 @@ namespace ts.projectSystem {
|
|||
host.reloadFS([file1, file2, modifiedConfigFile]);
|
||||
|
||||
checkNumberOfProjects(projectService, { configuredProjects: 1 });
|
||||
checkProjectRootFiles(projectService.configuredProjects[0], [file1.path, file2.path]);
|
||||
checkProjectRootFiles(configuredProjectAt(projectService, 0), [file1.path, file2.path]);
|
||||
});
|
||||
|
||||
it("can correctly update external project when set of root files has changed", () => {
|
||||
|
@ -1930,11 +1939,11 @@ namespace ts.projectSystem {
|
|||
|
||||
projectService.openClientFile(file1.path);
|
||||
checkNumberOfProjects(projectService, { configuredProjects: 1 });
|
||||
checkProjectActualFiles(projectService.configuredProjects[0], [file1.path, file2.path, config.path]);
|
||||
checkProjectActualFiles(configuredProjectAt(projectService, 0), [file1.path, file2.path, config.path]);
|
||||
|
||||
projectService.openClientFile(file2.path);
|
||||
checkNumberOfProjects(projectService, { configuredProjects: 1 });
|
||||
checkProjectActualFiles(projectService.configuredProjects[0], [file1.path, file2.path, config.path]);
|
||||
checkProjectActualFiles(configuredProjectAt(projectService, 0), [file1.path, file2.path, config.path]);
|
||||
|
||||
host.reloadFS([file1, file2]);
|
||||
host.checkTimeoutQueueLengthAndRun(1);
|
||||
|
@ -1968,13 +1977,13 @@ namespace ts.projectSystem {
|
|||
});
|
||||
projectService.openClientFile(f1.path);
|
||||
projectService.checkNumberOfProjects({ configuredProjects: 1 });
|
||||
checkProjectActualFiles(projectService.configuredProjects[0], [f1.path, config.path]);
|
||||
checkProjectActualFiles(configuredProjectAt(projectService, 0), [f1.path, config.path]);
|
||||
|
||||
projectService.closeClientFile(f1.path);
|
||||
|
||||
projectService.openClientFile(f2.path);
|
||||
projectService.checkNumberOfProjects({ configuredProjects: 1, inferredProjects: 1 });
|
||||
checkProjectActualFiles(projectService.configuredProjects[0], [f1.path, config.path]);
|
||||
checkProjectActualFiles(configuredProjectAt(projectService, 0), [f1.path, config.path]);
|
||||
checkProjectActualFiles(projectService.inferredProjects[0], [f2.path]);
|
||||
});
|
||||
|
||||
|
@ -1998,7 +2007,7 @@ namespace ts.projectSystem {
|
|||
|
||||
// HTML file will not be included in any projects yet
|
||||
checkNumberOfProjects(projectService, { configuredProjects: 1 });
|
||||
const configuredProj = projectService.configuredProjects[0];
|
||||
const configuredProj = configuredProjectAt(projectService, 0);
|
||||
checkProjectActualFiles(configuredProj, [file1.path, config.path]);
|
||||
|
||||
// Specify .html extension as mixed content
|
||||
|
@ -2008,8 +2017,8 @@ namespace ts.projectSystem {
|
|||
|
||||
// The configured project should now be updated to include html file
|
||||
checkNumberOfProjects(projectService, { configuredProjects: 1 });
|
||||
assert.strictEqual(projectService.configuredProjects[0], configuredProj, "Same configured project should be updated");
|
||||
checkProjectActualFiles(projectService.configuredProjects[0], [file1.path, file2.path, config.path]);
|
||||
assert.strictEqual(configuredProjectAt(projectService, 0), configuredProj, "Same configured project should be updated");
|
||||
checkProjectActualFiles(configuredProjectAt(projectService, 0), [file1.path, file2.path, config.path]);
|
||||
|
||||
// Open HTML file
|
||||
projectService.applyChangesInOpenFiles(
|
||||
|
@ -2019,10 +2028,10 @@ namespace ts.projectSystem {
|
|||
|
||||
// Now HTML file is included in the project
|
||||
checkNumberOfProjects(projectService, { configuredProjects: 1 });
|
||||
checkProjectActualFiles(projectService.configuredProjects[0], [file1.path, file2.path, config.path]);
|
||||
checkProjectActualFiles(configuredProjectAt(projectService, 0), [file1.path, file2.path, config.path]);
|
||||
|
||||
// Check identifiers defined in HTML content are available in .ts file
|
||||
const project = projectService.configuredProjects[0];
|
||||
const project = configuredProjectAt(projectService, 0);
|
||||
let completions = project.getLanguageService().getCompletionsAtPosition(file1.path, 1);
|
||||
assert(completions && completions.entries[0].name === "hello", `expected entry hello to be in completion list`);
|
||||
|
||||
|
@ -2034,7 +2043,7 @@ namespace ts.projectSystem {
|
|||
|
||||
// HTML file is still included in project
|
||||
checkNumberOfProjects(projectService, { configuredProjects: 1 });
|
||||
checkProjectActualFiles(projectService.configuredProjects[0], [file1.path, file2.path, config.path]);
|
||||
checkProjectActualFiles(configuredProjectAt(projectService, 0), [file1.path, file2.path, config.path]);
|
||||
|
||||
// Check identifiers defined in HTML content are not available in .ts file
|
||||
completions = project.getLanguageService().getCompletionsAtPosition(file1.path, 5);
|
||||
|
@ -2070,7 +2079,7 @@ namespace ts.projectSystem {
|
|||
|
||||
checkNumberOfProjects(projectService, { configuredProjects: 1 });
|
||||
|
||||
let diagnostics = projectService.configuredProjects[0].getLanguageService().getCompilerOptionsDiagnostics();
|
||||
let diagnostics = configuredProjectAt(projectService, 0).getLanguageService().getCompilerOptionsDiagnostics();
|
||||
assert.deepEqual(diagnostics, []);
|
||||
|
||||
// #2. Ensure no errors when allowJs is false
|
||||
|
@ -2089,7 +2098,7 @@ namespace ts.projectSystem {
|
|||
|
||||
checkNumberOfProjects(projectService, { configuredProjects: 1 });
|
||||
|
||||
diagnostics = projectService.configuredProjects[0].getLanguageService().getCompilerOptionsDiagnostics();
|
||||
diagnostics = configuredProjectAt(projectService, 0).getLanguageService().getCompilerOptionsDiagnostics();
|
||||
assert.deepEqual(diagnostics, []);
|
||||
|
||||
// #3. Ensure no errors when compiler options aren't specified
|
||||
|
@ -2108,7 +2117,7 @@ namespace ts.projectSystem {
|
|||
|
||||
checkNumberOfProjects(projectService, { configuredProjects: 1 });
|
||||
|
||||
diagnostics = projectService.configuredProjects[0].getLanguageService().getCompilerOptionsDiagnostics();
|
||||
diagnostics = configuredProjectAt(projectService, 0).getLanguageService().getCompilerOptionsDiagnostics();
|
||||
assert.deepEqual(diagnostics, []);
|
||||
|
||||
// #4. Ensure no errors when files are explicitly specified in tsconfig
|
||||
|
@ -2127,7 +2136,7 @@ namespace ts.projectSystem {
|
|||
|
||||
checkNumberOfProjects(projectService, { configuredProjects: 1 });
|
||||
|
||||
diagnostics = projectService.configuredProjects[0].getLanguageService().getCompilerOptionsDiagnostics();
|
||||
diagnostics = configuredProjectAt(projectService, 0).getLanguageService().getCompilerOptionsDiagnostics();
|
||||
assert.deepEqual(diagnostics, []);
|
||||
|
||||
// #4. Ensure no errors when files are explicitly excluded in tsconfig
|
||||
|
@ -2146,7 +2155,7 @@ namespace ts.projectSystem {
|
|||
|
||||
checkNumberOfProjects(projectService, { configuredProjects: 1 });
|
||||
|
||||
diagnostics = projectService.configuredProjects[0].getLanguageService().getCompilerOptionsDiagnostics();
|
||||
diagnostics = configuredProjectAt(projectService, 0).getLanguageService().getCompilerOptionsDiagnostics();
|
||||
assert.deepEqual(diagnostics, []);
|
||||
});
|
||||
|
||||
|
@ -2273,7 +2282,7 @@ namespace ts.projectSystem {
|
|||
|
||||
projectService.openClientFile(file2.path);
|
||||
checkNumberOfProjects(projectService, { configuredProjects: 1 });
|
||||
const project1 = projectService.configuredProjects[0];
|
||||
const project1 = configuredProjectAt(projectService, 0);
|
||||
assert.equal(project1.openRefCount, 1, "Open ref count in project1 - 1");
|
||||
assert.equal(project1.getScriptInfo(file2.path).containingProjects.length, 1, "containing projects count");
|
||||
|
||||
|
@ -2281,7 +2290,7 @@ namespace ts.projectSystem {
|
|||
checkNumberOfProjects(projectService, { configuredProjects: 2 });
|
||||
assert.equal(project1.openRefCount, 2, "Open ref count in project1 - 2");
|
||||
|
||||
const project2 = projectService.configuredProjects[1];
|
||||
const project2 = configuredProjectAt(projectService, 1);
|
||||
assert.equal(project2.openRefCount, 1, "Open ref count in project2 - 2");
|
||||
|
||||
assert.equal(project1.getScriptInfo(file1.path).containingProjects.length, 2, `${file1.path} containing projects count`);
|
||||
|
@ -2413,7 +2422,7 @@ namespace ts.projectSystem {
|
|||
});
|
||||
const projectService = session.getProjectService();
|
||||
checkNumberOfProjects(projectService, { configuredProjects: 1 });
|
||||
const project = projectService.configuredProjects[0];
|
||||
const project = configuredProjectAt(projectService, 0);
|
||||
assert.isFalse(project.languageServiceEnabled, "Language service enabled");
|
||||
assert.isTrue(!!lastEvent, "should receive event");
|
||||
assert.equal(lastEvent.data.project, project, "project name");
|
||||
|
@ -2462,7 +2471,7 @@ namespace ts.projectSystem {
|
|||
|
||||
const projectService = session.getProjectService();
|
||||
checkNumberOfProjects(projectService, { configuredProjects: 1 });
|
||||
const project = projectService.configuredProjects[0];
|
||||
const project = configuredProjectAt(projectService, 0);
|
||||
assert.isFalse(project.languageServiceEnabled, "Language service enabled");
|
||||
assert.isTrue(!!lastEvent, "should receive event");
|
||||
assert.equal(lastEvent.data.project, project, "project name");
|
||||
|
@ -2650,7 +2659,7 @@ namespace ts.projectSystem {
|
|||
options: {}
|
||||
});
|
||||
projectService.checkNumberOfProjects({ configuredProjects: 1 });
|
||||
checkProjectActualFiles(projectService.configuredProjects[0], [f1.path, tsconfig.path]);
|
||||
checkProjectActualFiles(configuredProjectAt(projectService, 0), [f1.path, tsconfig.path]);
|
||||
|
||||
// rename tsconfig.json back to lib.ts
|
||||
host.reloadFS([f1, f2]);
|
||||
|
@ -2707,8 +2716,8 @@ namespace ts.projectSystem {
|
|||
options: {}
|
||||
});
|
||||
projectService.checkNumberOfProjects({ configuredProjects: 2 });
|
||||
checkProjectActualFiles(projectService.configuredProjects[0], [cLib.path, cTsconfig.path]);
|
||||
checkProjectActualFiles(projectService.configuredProjects[1], [dLib.path, dTsconfig.path]);
|
||||
checkProjectActualFiles(configuredProjectAt(projectService, 0), [cLib.path, cTsconfig.path]);
|
||||
checkProjectActualFiles(configuredProjectAt(projectService, 1), [dLib.path, dTsconfig.path]);
|
||||
|
||||
// remove one config file
|
||||
projectService.openExternalProject({
|
||||
|
@ -2718,7 +2727,7 @@ namespace ts.projectSystem {
|
|||
});
|
||||
|
||||
projectService.checkNumberOfProjects({ configuredProjects: 1 });
|
||||
checkProjectActualFiles(projectService.configuredProjects[0], [dLib.path, dTsconfig.path]);
|
||||
checkProjectActualFiles(configuredProjectAt(projectService, 0), [dLib.path, dTsconfig.path]);
|
||||
|
||||
// remove second config file
|
||||
projectService.openExternalProject({
|
||||
|
@ -2738,8 +2747,8 @@ namespace ts.projectSystem {
|
|||
options: {}
|
||||
});
|
||||
projectService.checkNumberOfProjects({ configuredProjects: 2 });
|
||||
checkProjectActualFiles(projectService.configuredProjects[0], [cLib.path, cTsconfig.path]);
|
||||
checkProjectActualFiles(projectService.configuredProjects[1], [dLib.path, dTsconfig.path]);
|
||||
checkProjectActualFiles(configuredProjectAt(projectService, 0), [cLib.path, cTsconfig.path]);
|
||||
checkProjectActualFiles(configuredProjectAt(projectService, 1), [dLib.path, dTsconfig.path]);
|
||||
|
||||
// close all projects - no projects should be opened
|
||||
projectService.closeExternalProject(projectName);
|
||||
|
@ -2795,13 +2804,13 @@ namespace ts.projectSystem {
|
|||
projectService.openClientFile(app.path);
|
||||
|
||||
projectService.checkNumberOfProjects({ configuredProjects: 1 });
|
||||
checkProjectActualFiles(projectService.configuredProjects[0], [libES5.path, app.path, config1.path]);
|
||||
checkProjectActualFiles(configuredProjectAt(projectService, 0), [libES5.path, app.path, config1.path]);
|
||||
|
||||
host.reloadFS([libES5, libES2015Promise, app, config2]);
|
||||
host.checkTimeoutQueueLengthAndRun(2);
|
||||
|
||||
projectService.checkNumberOfProjects({ configuredProjects: 1 });
|
||||
checkProjectActualFiles(projectService.configuredProjects[0], [libES5.path, libES2015Promise.path, app.path, config2.path]);
|
||||
checkProjectActualFiles(configuredProjectAt(projectService, 0), [libES5.path, libES2015Promise.path, app.path, config2.path]);
|
||||
});
|
||||
|
||||
it("should handle non-existing directories in config file", () => {
|
||||
|
@ -2856,7 +2865,7 @@ namespace ts.projectSystem {
|
|||
|
||||
projectService.openClientFile(f1.path);
|
||||
projectService.checkNumberOfProjects({ configuredProjects: 1 });
|
||||
checkProjectActualFiles(projectService.configuredProjects[0], [f1.path, barTypings.path, config.path]);
|
||||
checkProjectActualFiles(configuredProjectAt(projectService, 0), [f1.path, barTypings.path, config.path]);
|
||||
});
|
||||
});
|
||||
|
||||
|
@ -2927,7 +2936,7 @@ namespace ts.projectSystem {
|
|||
|
||||
projectService.openClientFile(f1.path);
|
||||
projectService.checkNumberOfProjects({ configuredProjects: 1 });
|
||||
checkProjectActualFiles(projectService.configuredProjects[0], [f1.path, t1.path, tsconfig.path]);
|
||||
checkProjectActualFiles(configuredProjectAt(projectService, 0), [f1.path, t1.path, tsconfig.path]);
|
||||
|
||||
// delete t1
|
||||
host.reloadFS([f1, tsconfig]);
|
||||
|
@ -2935,7 +2944,7 @@ namespace ts.projectSystem {
|
|||
host.runQueuedTimeoutCallbacks();
|
||||
|
||||
projectService.checkNumberOfProjects({ configuredProjects: 1 });
|
||||
checkProjectActualFiles(projectService.configuredProjects[0], [f1.path, tsconfig.path]);
|
||||
checkProjectActualFiles(configuredProjectAt(projectService, 0), [f1.path, tsconfig.path]);
|
||||
|
||||
// create t2
|
||||
host.reloadFS([f1, tsconfig, t2]);
|
||||
|
@ -2943,7 +2952,7 @@ namespace ts.projectSystem {
|
|||
host.runQueuedTimeoutCallbacks();
|
||||
|
||||
projectService.checkNumberOfProjects({ configuredProjects: 1 });
|
||||
checkProjectActualFiles(projectService.configuredProjects[0], [f1.path, t2.path, tsconfig.path]);
|
||||
checkProjectActualFiles(configuredProjectAt(projectService, 0), [f1.path, t2.path, tsconfig.path]);
|
||||
});
|
||||
});
|
||||
|
||||
|
@ -3120,7 +3129,7 @@ namespace ts.projectSystem {
|
|||
const projectService = createProjectService(host);
|
||||
projectService.openClientFile(f1.path);
|
||||
projectService.checkNumberOfProjects({ configuredProjects: 1 });
|
||||
checkProjectActualFiles(projectService.configuredProjects[0], [f1.path, node.path, config.path]);
|
||||
checkProjectActualFiles(configuredProjectAt(projectService, 0), [f1.path, node.path, config.path]);
|
||||
});
|
||||
});
|
||||
|
||||
|
@ -3496,7 +3505,7 @@ namespace ts.projectSystem {
|
|||
checkNumberOfConfiguredProjects(projectService, 1);
|
||||
checkNumberOfInferredProjects(projectService, 1);
|
||||
|
||||
const configuredProject = projectService.configuredProjects[0];
|
||||
const configuredProject = configuredProjectAt(projectService, 0);
|
||||
checkProjectActualFiles(configuredProject, [configFile.path]);
|
||||
|
||||
const inferredProject = projectService.inferredProjects[0];
|
||||
|
@ -4157,7 +4166,7 @@ namespace ts.projectSystem {
|
|||
|
||||
const projectService = session.getProjectService();
|
||||
checkNumberOfProjects(projectService, { configuredProjects: 1 });
|
||||
const projectName = projectService.configuredProjects[0].getProjectName();
|
||||
const projectName = configuredProjectAt(projectService, 0).getProjectName();
|
||||
|
||||
const diags = session.executeCommand(<server.protocol.SemanticDiagnosticsSyncRequest>{
|
||||
type: "request",
|
||||
|
|
|
@ -92,7 +92,7 @@ namespace ts.projectSystem {
|
|||
const service = createProjectService(host, { typingsInstaller: installer });
|
||||
service.openClientFile(f1.path);
|
||||
service.checkNumberOfProjects({ configuredProjects: 1 });
|
||||
checkProjectActualFiles(service.configuredProjects[0], [f1.path, f2.path, config.path]);
|
||||
checkProjectActualFiles(configuredProjectAt(service, 0), [f1.path, f2.path, config.path]);
|
||||
installer.installAll(0);
|
||||
});
|
||||
});
|
||||
|
@ -144,7 +144,7 @@ namespace ts.projectSystem {
|
|||
projectService.openClientFile(file1.path);
|
||||
|
||||
checkNumberOfProjects(projectService, { configuredProjects: 1 });
|
||||
const p = projectService.configuredProjects[0];
|
||||
const p = configuredProjectAt(projectService, 0);
|
||||
checkProjectActualFiles(p, [file1.path, tsconfig.path]);
|
||||
|
||||
installer.installAll(/*expectedCount*/ 1);
|
||||
|
@ -706,7 +706,7 @@ namespace ts.projectSystem {
|
|||
projectService.openClientFile(app.path);
|
||||
|
||||
checkNumberOfProjects(projectService, { configuredProjects: 1 });
|
||||
const p = projectService.configuredProjects[0];
|
||||
const p = configuredProjectAt(projectService, 0);
|
||||
checkProjectActualFiles(p, [app.path, jsconfig.path]);
|
||||
|
||||
installer.installAll(/*expectedCount*/ 1);
|
||||
|
@ -753,7 +753,7 @@ namespace ts.projectSystem {
|
|||
projectService.openClientFile(app.path);
|
||||
|
||||
checkNumberOfProjects(projectService, { configuredProjects: 1 });
|
||||
const p = projectService.configuredProjects[0];
|
||||
const p = configuredProjectAt(projectService, 0);
|
||||
checkProjectActualFiles(p, [app.path, jsconfig.path]);
|
||||
checkWatchedFiles(host, [jsconfig.path, "/bower_components", "/node_modules", libFile.path]);
|
||||
|
||||
|
@ -801,7 +801,7 @@ namespace ts.projectSystem {
|
|||
projectService.openClientFile(app.path);
|
||||
|
||||
checkNumberOfProjects(projectService, { configuredProjects: 1 });
|
||||
const p = projectService.configuredProjects[0];
|
||||
const p = configuredProjectAt(projectService, 0);
|
||||
checkProjectActualFiles(p, [app.path, jsconfig.path]);
|
||||
|
||||
installer.installAll(/*expectedCount*/ 1);
|
||||
|
|
|
@ -325,7 +325,7 @@ namespace ts.server {
|
|||
/**
|
||||
* projects specified by a tsconfig.json file
|
||||
*/
|
||||
readonly configuredProjects: ConfiguredProject[] = [];
|
||||
readonly configuredProjects = createMap<ConfiguredProject>();
|
||||
/**
|
||||
* list of open files
|
||||
*/
|
||||
|
@ -730,7 +730,7 @@ namespace ts.server {
|
|||
break;
|
||||
case ProjectKind.Configured:
|
||||
// Update the map of mapOfKnownTsConfigFiles
|
||||
removeItemFromSet(this.configuredProjects, <ConfiguredProject>project);
|
||||
this.configuredProjects.delete((<ConfiguredProject>project).canonicalConfigFilePath);
|
||||
this.projectToSizeMap.delete((project as ConfiguredProject).canonicalConfigFilePath);
|
||||
break;
|
||||
case ProjectKind.Inferred:
|
||||
|
@ -1035,7 +1035,7 @@ namespace ts.server {
|
|||
|
||||
let counter = 0;
|
||||
counter = printProjects(this.logger, this.externalProjects, counter);
|
||||
counter = printProjects(this.logger, this.configuredProjects, counter);
|
||||
counter = printProjects(this.logger, arrayFrom(this.configuredProjects.values()), counter);
|
||||
counter = printProjects(this.logger, this.inferredProjects, counter);
|
||||
|
||||
this.logger.info("Open files: ");
|
||||
|
@ -1060,11 +1060,7 @@ namespace ts.server {
|
|||
private findConfiguredProjectByProjectName(configFileName: NormalizedPath) {
|
||||
// make sure that casing of config file name is consistent
|
||||
const canonicalConfigFilePath = asNormalizedPath(this.toCanonicalFileName(configFileName));
|
||||
for (const proj of this.configuredProjects) {
|
||||
if (proj.canonicalConfigFilePath === canonicalConfigFilePath) {
|
||||
return proj;
|
||||
}
|
||||
}
|
||||
return this.configuredProjects.get(canonicalConfigFilePath);
|
||||
}
|
||||
|
||||
private findExternalProjectByProjectName(projectFileName: string) {
|
||||
|
@ -1224,7 +1220,7 @@ namespace ts.server {
|
|||
}
|
||||
|
||||
this.addFilesToNonInferredProjectAndUpdateGraph(project, projectOptions.files, fileNamePropertyReader, clientFileName, projectOptions.typeAcquisition, configFileErrors);
|
||||
this.configuredProjects.push(project);
|
||||
this.configuredProjects.set(project.canonicalConfigFilePath, project);
|
||||
this.setConfigFilePresenceByNewConfiguredProject(project);
|
||||
this.sendProjectTelemetry(project.getConfigFilePath(), project, projectOptions);
|
||||
return project;
|
||||
|
@ -1678,7 +1674,7 @@ namespace ts.server {
|
|||
synchronizeProjectList(knownProjects: protocol.ProjectVersionInfo[]): ProjectFilesWithTSDiagnostics[] {
|
||||
const files: ProjectFilesWithTSDiagnostics[] = [];
|
||||
this.collectChanges(knownProjects, this.externalProjects, files);
|
||||
this.collectChanges(knownProjects, this.configuredProjects, files);
|
||||
this.collectChanges(knownProjects, arrayFrom(this.configuredProjects.values()), files);
|
||||
this.collectChanges(knownProjects, this.inferredProjects, files);
|
||||
return files;
|
||||
}
|
||||
|
|
|
@ -498,7 +498,7 @@ namespace ts.server {
|
|||
|
||||
private cleanup() {
|
||||
this.cleanProjects("inferred projects", this.projectService.inferredProjects);
|
||||
this.cleanProjects("configured projects", this.projectService.configuredProjects);
|
||||
this.cleanProjects("configured projects", arrayFrom(this.projectService.configuredProjects.values()));
|
||||
this.cleanProjects("external projects", this.projectService.externalProjects);
|
||||
if (this.host.gc) {
|
||||
this.logger.info(`host.gc()`);
|
||||
|
|
Loading…
Reference in a new issue