diff options
Diffstat (limited to 'libbuild2/algorithm.cxx')
-rw-r--r-- | libbuild2/algorithm.cxx | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/libbuild2/algorithm.cxx b/libbuild2/algorithm.cxx index 4db3d72..ad4c406 100644 --- a/libbuild2/algorithm.cxx +++ b/libbuild2/algorithm.cxx @@ -1265,6 +1265,20 @@ namespace build2 return ct.try_matched_state (a, false); } + void + match_only_sync (action a, const target& t) + { + assert (t.ctx.phase == run_phase::match); + + target_lock l (lock_impl (a, t, scheduler::work_none)); + + if (l.target != nullptr && l.offset < target::offset_matched) + { + if (match_impl (l, true /* step */).second == target_state::failed) + throw failed (); + } + } + // Note: lock is a reference to avoid the stacking overhead. // static group_view |