Add output declaration files from referenced project into program if module: none

This commit is contained in:
Sheetal Nandi 2019-03-08 10:19:02 -08:00
parent 97fbc87e98
commit 927c10ae31
2 changed files with 52 additions and 6 deletions

View File

@ -825,11 +825,16 @@ namespace ts {
}
if (rootNames.length) {
for (const parsedRef of resolvedProjectReferences) {
if (parsedRef) {
const out = parsedRef.commandLine.options.outFile || parsedRef.commandLine.options.out;
if (out) {
const dtsOutfile = changeExtension(out, ".d.ts");
processSourceFile(dtsOutfile, /*isDefaultLib*/ false, /*ignoreNoDefaultLib*/ false, /*packageId*/ undefined);
if (!parsedRef) continue;
const out = parsedRef.commandLine.options.outFile || parsedRef.commandLine.options.out;
if (out) {
processSourceFile(changeExtension(out, ".d.ts"), /*isDefaultLib*/ false, /*ignoreNoDefaultLib*/ false, /*packageId*/ undefined);
}
else if (getEmitModuleKind(parsedRef.commandLine.options) === ModuleKind.None) {
for (const fileName of parsedRef.commandLine.fileNames) {
if (!fileExtensionIs(fileName, Extension.Dts) && hasTSFileExtension(fileName)) {
processSourceFile(getOutputDeclarationFileName(fileName, parsedRef.commandLine), /*isDefaultLib*/ false, /*ignoreNoDefaultLib*/ false, /*packageId*/ undefined);
}
}
}
}

View File

@ -449,7 +449,6 @@ namespace ts {
changeCompilerVersion(host);
builder.buildAllProjects();
host.assertDiagnosticMessages(
// TODO:: This should build all instead
getExpectedDiagnosticForProjectsInBuild(relSources[project.first][source.config], relSources[project.second][source.config], relSources[project.third][source.config]),
[Diagnostics.Project_0_is_out_of_date_because_output_for_it_was_generated_with_version_1_that_differs_with_current_version_2, relSources[project.first][source.config], fakes.version, version],
[Diagnostics.Building_project_0, sources[project.first][source.config]],
@ -856,5 +855,47 @@ ${internal} enum internalEnum { a, b, c }`);
});
});
});
it("non module projects without prepend", () => {
const fs = outFileFs.shadow();
// No prepend
replaceText(fs, sources[project.third][source.config], `{ "path": "../first", "prepend": true }`, `{ "path": "../first" }`);
replaceText(fs, sources[project.third][source.config], `{ "path": "../second", "prepend": true }`, `{ "path": "../second" }`);
// Non Modules
replaceText(fs, sources[project.first][source.config], `"composite": true,`, `"composite": true, "module": "none",`);
replaceText(fs, sources[project.second][source.config], `"composite": true,`, `"composite": true, "module": "none",`);
replaceText(fs, sources[project.third][source.config], `"composite": true,`, `"composite": true, "module": "none",`);
// Own file emit
replaceText(fs, sources[project.first][source.config], `"outFile": "./bin/first-output.js",`, "");
replaceText(fs, sources[project.second][source.config], `"outFile": "../2/second-output.js",`, "");
replaceText(fs, sources[project.third][source.config], `"outFile": "./thirdjs/output/third-output.js",`, "");
const host = new fakes.SolutionBuilderHost(fs);
const builder = createSolutionBuilder(host);
builder.buildAllProjects();
host.assertDiagnosticMessages(
getExpectedDiagnosticForProjectsInBuild(relSources[project.first][source.config], relSources[project.second][source.config], relSources[project.third][source.config]),
[Diagnostics.Project_0_is_out_of_date_because_output_file_1_does_not_exist, relSources[project.first][source.config], "src/first/first_PART1.js"],
[Diagnostics.Building_project_0, sources[project.first][source.config]],
[Diagnostics.Project_0_is_out_of_date_because_output_file_1_does_not_exist, relSources[project.second][source.config], "src/second/second_part1.js"],
[Diagnostics.Building_project_0, sources[project.second][source.config]],
[Diagnostics.Project_0_is_out_of_date_because_output_file_1_does_not_exist, relSources[project.third][source.config], "src/third/third_part1.js"],
[Diagnostics.Building_project_0, sources[project.third][source.config]]
);
const expectedOutputFiles = flatMap(sources, ([config, ts]) => [
removeFileExtension(config) + Extension.TsBuildInfo,
...flatMap(ts, f => [
removeFileExtension(f) + Extension.Js,
removeFileExtension(f) + Extension.Js + ".map",
removeFileExtension(f) + Extension.Dts,
removeFileExtension(f) + Extension.Dts + ".map",
])
]);
for (const output of expectedOutputFiles) {
assert(fs.existsSync(output), `Expect file ${output} to exist`);
}
});
});
}