diff options
author | Boris Kolpackov <boris@codesynthesis.com> | 2018-02-05 12:02:32 +0200 |
---|---|---|
committer | Boris Kolpackov <boris@codesynthesis.com> | 2018-02-05 12:02:32 +0200 |
commit | 1bb564a690e2661094e9071d4003638390a5a6fe (patch) | |
tree | 48ed8eedb1f87fd05eb66547c12349bb3db92c2b /build2/target.ixx | |
parent | 7005f1f5b525705fa3fd458a840d027046a2085b (diff) |
Fix test and install rules to handle see-through groups correctly
Diffstat (limited to 'build2/target.ixx')
-rw-r--r-- | build2/target.ixx | 14 |
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:: |