From 934f2a9a90c5cad3cdc8a66b50c17827a3ddbcee Mon Sep 17 00:00:00 2001 From: Boris Kolpackov Date: Sat, 20 Jan 2018 13:46:11 +0200 Subject: Get rid of action rule override semantics Instead we now have two more or less separate match states for outer and inner parts of an action. --- build2/operation.cxx | 19 ++++--------------- 1 file changed, 4 insertions(+), 15 deletions(-) (limited to 'build2/operation.cxx') diff --git a/build2/operation.cxx b/build2/operation.cxx index 698edbb..a43e20a 100644 --- a/build2/operation.cxx +++ b/build2/operation.cxx @@ -191,20 +191,9 @@ namespace build2 action_target& at (ts[j]); const target& t (at.as_target ()); - // Finish matching targets that we have started. Note that we use the - // state for the "final" action that will be executed and not our - // action. Failed that, we may fail to find a match for a "stronger" - // action but will still get unchanged for the original one. - // - target_state s; - if (j < i) - { - match (a, t, false); - s = t.serial_state (false); - } - else - s = target_state::postponed; - + target_state s (j < i + ? match (a, t, false) + : target_state::postponed); switch (s) { case target_state::postponed: @@ -369,7 +358,7 @@ namespace build2 { const target& t (at.as_target ()); - switch ((at.state = t.executed_state (false))) + switch ((at.state = t.executed_state (a, false))) { case target_state::unknown: { -- cgit v1.1