aboutsummaryrefslogtreecommitdiff
path: root/libbuild2/dump.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'libbuild2/dump.cxx')
-rw-r--r--libbuild2/dump.cxx17
1 files changed, 9 insertions, 8 deletions
diff --git a/libbuild2/dump.cxx b/libbuild2/dump.cxx
index 95c7cae..7cd95dd 100644
--- a/libbuild2/dump.cxx
+++ b/libbuild2/dump.cxx
@@ -438,7 +438,7 @@ namespace build2
scope_map::const_iterator& i,
bool rel)
{
- const scope& p (i->second);
+ const scope& p (*i->second.scope);
const dir_path& d (i->first);
++i;
@@ -484,7 +484,8 @@ namespace build2
vb = true;
}
- // Nested scopes of which we are an immediate parent.
+ // Nested scopes of which we are an immediate parent. Only consider the
+ // out hierarchy.
//
// Note that because we use the logical (rather than physical) parent, we
// will be printing the logical scope hierarchy (i.e., a project with
@@ -492,7 +493,7 @@ namespace build2
// scope).
//
for (auto e (p.ctx.scopes.end ());
- i != e && i->second.parent_scope () == &p; )
+ i != e && i->second.out && i->second.scope->parent_scope () == &p; )
{
if (vb)
{
@@ -541,8 +542,8 @@ namespace build2
void
dump (const context& c, optional<action> a)
{
- auto i (c.scopes.cbegin ());
- assert (&i->second == &c.global_scope);
+ auto i (c.scopes.begin ());
+ assert (i->second.scope == &c.global_scope);
// We don't lock diag_stream here as dump() is supposed to be called from
// the main thread prior/after to any other threads being spawned.
@@ -556,9 +557,9 @@ namespace build2
void
dump (const scope& s, const char* cind)
{
- const scope_map_base& m (s.ctx.scopes); // Iterator interface.
- auto i (m.find (s.out_path ()));
- assert (i != m.end () && &i->second == &s);
+ const scope_map& m (s.ctx.scopes);
+ auto i (m.find_exact (s.out_path ()));
+ assert (i != m.end () && i->second.scope == &s);
string ind (cind);
ostream& os (*diag_stream);