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; } }