aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
Diffstat (limited to 'gcc')
-rw-r--r--gcc/rust/resolve/rust-ast-resolve-unused.h9
-rw-r--r--gcc/rust/resolve/rust-name-resolver.h15
2 files changed, 14 insertions, 10 deletions
diff --git a/gcc/rust/resolve/rust-ast-resolve-unused.h b/gcc/rust/resolve/rust-ast-resolve-unused.h
index 18d02a1..b8b50a0 100644
--- a/gcc/rust/resolve/rust-ast-resolve-unused.h
+++ b/gcc/rust/resolve/rust-ast-resolve-unused.h
@@ -27,7 +27,7 @@ namespace Resolver {
class ScanUnused
{
public:
- static void ScanRib (Rib *r)
+ static bool ScanRib (Rib *r)
{
r->iterate_decls ([&] (NodeId decl_node_id, Location locus) -> bool {
CanonicalPath ident = CanonicalPath::create_empty ();
@@ -43,14 +43,15 @@ public:
}
return true;
});
+ return true;
}
static void Scan ()
{
auto resolver = Resolver::get ();
- resolver->iterate_name_ribs ([&] (Rib *r) -> void { ScanRib (r); });
- resolver->iterate_type_ribs ([&] (Rib *r) -> void { ScanRib (r); });
- resolver->iterate_label_ribs ([&] (Rib *r) -> void { ScanRib (r); });
+ resolver->iterate_name_ribs ([&] (Rib *r) -> bool { return ScanRib (r); });
+ resolver->iterate_type_ribs ([&] (Rib *r) -> bool { return ScanRib (r); });
+ resolver->iterate_label_ribs ([&] (Rib *r) -> bool { return ScanRib (r); });
}
};
diff --git a/gcc/rust/resolve/rust-name-resolver.h b/gcc/rust/resolve/rust-name-resolver.h
index 1b26a46..6fac3d3 100644
--- a/gcc/rust/resolve/rust-name-resolver.h
+++ b/gcc/rust/resolve/rust-name-resolver.h
@@ -335,27 +335,30 @@ public:
return it->second.size ();
}
- void iterate_name_ribs (std::function<void (Rib *)> cb)
+ void iterate_name_ribs (std::function<bool (Rib *)> cb)
{
for (auto it = name_ribs.begin (); it != name_ribs.end (); it++)
- cb (it->second);
+ if (!cb (it->second))
+ break;
}
- void iterate_type_ribs (std::function<void (Rib *)> cb)
+ void iterate_type_ribs (std::function<bool (Rib *)> cb)
{
for (auto it = type_ribs.begin (); it != type_ribs.end (); it++)
{
if (it->first == global_type_node_id)
continue;
- cb (it->second);
+ if (!cb (it->second))
+ break;
}
}
- void iterate_label_ribs (std::function<void (Rib *)> cb)
+ void iterate_label_ribs (std::function<bool (Rib *)> cb)
{
for (auto it = label_ribs.begin (); it != label_ribs.end (); it++)
- cb (it->second);
+ if (!cb (it->second))
+ break;
}
private: