From 044a51d57c9db8d3aad5f1ee43f6c6d601dbfdbc Mon Sep 17 00:00:00 2001 From: Shinichiro Hamaji Date: Tue, 15 Mar 2016 08:31:29 +0900 Subject: Fix https://github.com/google/kati/issues/47 --- ninja.cc | 12 +++--------- testcase/fail_ignore_error.mk | 6 ++++++ 2 files changed, 9 insertions(+), 9 deletions(-) create mode 100644 testcase/fail_ignore_error.mk diff --git a/ninja.cc b/ninja.cc index 41e5db4..c95ee64 100644 --- a/ninja.cc +++ b/ninja.cc @@ -407,25 +407,19 @@ class NinjaGenerator { static bool was_gomacc_found = false; bool got_descritpion = false; bool use_gomacc = false; - bool should_ignore_error = false; auto command_count = commands.size(); for (const Command* c : commands) { size_t cmd_begin = cmd_buf->size(); if (!cmd_buf->empty()) { - if (should_ignore_error) { - *cmd_buf += " ; "; - } else { - *cmd_buf += " && "; - } + *cmd_buf += " && "; } - should_ignore_error = c->ignore_error; const char* in = c->cmd.c_str(); while (isspace(*in)) in++; - bool needs_subshell = command_count > 1; + bool needs_subshell = (command_count > 1 || c->ignore_error); if (needs_subshell) *cmd_buf += '('; @@ -455,7 +449,7 @@ class NinjaGenerator { was_gomacc_found = true; } - if (c == commands.back() && c->ignore_error) { + if (c->ignore_error) { *cmd_buf += " ; true"; } diff --git a/testcase/fail_ignore_error.mk b/testcase/fail_ignore_error.mk new file mode 100644 index 0000000..c4e71a6 --- /dev/null +++ b/testcase/fail_ignore_error.mk @@ -0,0 +1,6 @@ +# TODO(go-ninja): Fix + +test: + false + -false + echo FAIL -- cgit v1.2.3