aboutsummaryrefslogtreecommitdiff
path: root/build2/algorithm.cxx
diff options
context:
space:
mode:
authorBoris Kolpackov <boris@codesynthesis.com>2016-10-15 17:57:55 +0200
committerBoris Kolpackov <boris@codesynthesis.com>2016-11-04 09:26:21 +0200
commitf5090740dcb36067707ff40e0d41cdbeef15e63e (patch)
tree38529704fcc11544ea3c8f64c1f2d86323692d04 /build2/algorithm.cxx
parent32e60fc5d4e771c5776ddb6715db10e5de182f28 (diff)
Add support for skipping rule in delegate_match()
Diffstat (limited to 'build2/algorithm.cxx')
-rw-r--r--build2/algorithm.cxx9
1 files changed, 6 insertions, 3 deletions
diff --git a/build2/algorithm.cxx b/build2/algorithm.cxx
index 8dc5621..2390b04 100644
--- a/build2/algorithm.cxx
+++ b/build2/algorithm.cxx
@@ -53,7 +53,7 @@ namespace build2
}
pair<const rule*, match_result>
- match_impl (action a, target& t, bool apply)
+ match_impl (action a, target& t, bool apply, const rule* skip)
{
pair<const rule*, match_result> r;
@@ -97,8 +97,8 @@ namespace build2
if (om == nullptr)
continue; // No entry for this meta-operation id.
- // First try the map for the actual operation. If that
- // doesn't yeld anything, try the wildcard map.
+ // First try the map for the actual operation. If that doesn't yeld
+ // anything, try the wildcard map.
//
for (size_t oi (o), oip (o); oip != 0; oip = oi, oi = 0)
{
@@ -140,6 +140,9 @@ namespace build2
const string& n (i->first);
const rule& ru (i->second);
+ if (&ru == skip)
+ continue;
+
match_result m;
{
auto g (