Don't assert on gn builds without any target.
NinjaWriter::RunAndWriteFiles() returned false but wrote a diag
to stdout instead of filling in *err. Later, RunGen() would
call `err.PrintToStdout();` when RunAndWriteFiles() returned false,
which DCHECK(has_error_)ed which failed since err wasn't set.
Change-Id: Ia4ca29507bcc3855da3d6c233c6f13b9538ea96d
Bug: none
Reviewed-on: https://gn-review.googlesource.com/c/gn/+/8800
Commit-Queue: Brett Wilson <brettw@chromium.org>
Reviewed-by: Brett Wilson <brettw@chromium.org>
diff --git a/src/gn/ninja_writer.cc b/src/gn/ninja_writer.cc
index b2bd98a..999718a 100644
--- a/src/gn/ninja_writer.cc
+++ b/src/gn/ninja_writer.cc
@@ -31,9 +31,8 @@
bool NinjaWriter::WriteToolchains(const PerToolchainRules& per_toolchain_rules,
Err* err) {
if (per_toolchain_rules.empty()) {
- Err(Location(), "No targets.",
- "I could not find any targets to write, so I'm doing nothing.")
- .PrintToStdout();
+ *err = Err(Location(), "No targets.",
+ "I could not find any targets to write, so I'm doing nothing.");
return false;
}
@@ -42,8 +41,8 @@
const Settings* settings =
builder_.loader()->GetToolchainSettings(toolchain->label());
if (!NinjaToolchainWriter::RunAndWriteFile(settings, toolchain, i.second)) {
- Err(Location(), "Couldn't open toolchain buildfile(s) for writing")
- .PrintToStdout();
+ *err =
+ Err(Location(), "Couldn't open toolchain buildfile(s) for writing");
return false;
}
}