aboutsummaryrefslogtreecommitdiff
path: root/build2/target.ixx
diff options
context:
space:
mode:
authorBoris Kolpackov <boris@codesynthesis.com>2018-02-05 12:02:32 +0200
committerBoris Kolpackov <boris@codesynthesis.com>2018-02-05 12:02:32 +0200
commit1bb564a690e2661094e9071d4003638390a5a6fe (patch)
tree48ed8eedb1f87fd05eb66547c12349bb3db92c2b /build2/target.ixx
parent7005f1f5b525705fa3fd458a840d027046a2085b (diff)
Fix test and install rules to handle see-through groups correctly
Diffstat (limited to 'build2/target.ixx')
-rw-r--r--build2/target.ixx14
1 files changed, 12 insertions, 2 deletions
diff --git a/build2/target.ixx b/build2/target.ixx
index 16dbf61..242e81d 100644
--- a/build2/target.ixx
+++ b/build2/target.ixx
@@ -212,7 +212,7 @@ namespace build2
if (k_ == nullptr && g_.count != 0) // Iterating over a normal group.
{
- if (g_.members == nullptr || // leave_group()
+ if (g_.members == nullptr || // Special case, see leave_group().
++j_ > g_.count)
g_.count = 0;
}
@@ -248,7 +248,7 @@ namespace build2
{
// Otherwise assume it is a normal group.
//
- g_ = resolve_group_members (r_->a_, search (*i_));
+ g_ = resolve_group_members (r_->a_, search (r_->t_, *i_));
if (g_.members == nullptr) // Members are not know.
{
@@ -283,6 +283,16 @@ namespace build2
}
}
+ template <typename T>
+ inline bool prerequisite_members_range<T>::iterator::
+ group () const
+ {
+ return
+ k_ != nullptr ? k_->member != nullptr : /* ad hoc */
+ g_.count != 0 ? g_.members != nullptr && j_ < g_.count : /* normal */
+ false;
+ }
+
// mtime_target
//
inline void mtime_target::