Introduce Crate::get_items () and fixup all callers.
gcc/rust/ChangeLog:
* hir/tree/rust-hir.h (struct Crate): Rename struct into ...
(class Crate): ... class, and add get_items.
* backend/rust-compile.cc (CompileCrate::go): Adapt to visibility change of items.
* checks/errors/privacy/rust-privacy-check.cc (Resolver::resolve): Likewise.
* checks/errors/privacy/rust-privacy-reporter.cc (PrivacyReporter::go): Likewise.
* checks/errors/privacy/rust-pub-restricted-visitor.cc (PubRestrictedVisitor::go): Likewise.
* checks/errors/privacy/rust-visibility-resolver.cc (VisibilityResolver::go): Likewise.
* checks/errors/rust-const-checker.cc (ConstChecker::go): Likewise.
* checks/errors/rust-unsafe-checker.cc (UnsafeChecker::go): Likewise.
* checks/lints/rust-lint-marklive.cc (FindEntryPoint::find): Likewise.
* checks/lints/rust-lint-scan-deadcode.h (ScanDeadCode::Scan): Likewise.
* metadata/rust-export-metadata.cc (PublicInterface::gather_export_data): Likewise.
* typecheck/rust-hir-type-check.cc (TypeResolution::Resolve): Likewise.
* hir/rust-hir-dump.cc (CompileCrate::go): Likewise.
Signed-off-by: Marc Poulhiès <dkm@kataplop.net>
void
CompileCrate::go ()
{
- for (auto &item : crate.items)
+ for (auto &item : crate.get_items ())
CompileItem::compile (item.get (), ctx);
}
auto visitor = ReachabilityVisitor (ctx, *ty_ctx);
- const auto &items = crate.items;
-
- for (auto &item : items)
+ for (auto &item : crate.get_items ())
{
if (item->get_hir_kind () == HIR::Node::VIS_ITEM)
{
void
PrivacyReporter::go (HIR::Crate &crate)
{
- for (auto &item : crate.items)
+ for (auto &item : crate.get_items ())
item->accept_vis (*this);
}
// FIXME: When do we insert `super`? `self`?
// We need wrapper function for these
- for (auto &item : crate.items)
+ for (auto &item : crate.get_items ())
{
if (item->get_hir_kind () == HIR::Node::VIS_ITEM)
{
current_module = crate.get_mappings ().get_defid ();
- for (auto &item : crate.items)
+ for (auto &item : crate.get_items ())
{
if (item->get_hir_kind () == HIR::Node::VIS_ITEM)
{
void
ConstChecker::go (HIR::Crate &crate)
{
- for (auto &item : crate.items)
+ for (auto &item : crate.get_items ())
item->accept_vis (*this);
}
void
UnsafeChecker::go (HIR::Crate &crate)
{
- for (auto &item : crate.items)
+ for (auto &item : crate.get_items ())
item->accept_vis (*this);
}
static std::vector<HirId> find (HIR::Crate &crate)
{
FindEntryPoint findEntryPoint;
- for (auto it = crate.items.begin (); it != crate.items.end (); it++)
- {
- it->get ()->accept_vis (findEntryPoint);
- }
+ for (auto &it : crate.get_items ())
+ it->accept_vis (findEntryPoint);
return findEntryPoint.getEntryPoint ();
}
{
std::set<HirId> live_symbols = Analysis::MarkLive::Analysis (crate);
ScanDeadcode sdc (live_symbols);
- for (auto it = crate.items.begin (); it != crate.items.end (); it++)
- {
- it->get ()->accept_vis (sdc);
- }
+ for (auto &it : crate.get_items ())
+ it.get ()->accept_vis (sdc);
};
void visit (HIR::Function &function) override
stream << "items: [";
stream << indentation;
- for (const auto &item : crate.items)
+ for (const auto &item : crate.get_items ())
{
stream << std::endl;
item->accept_vis (*this);
};
// A crate HIR object - holds all the data for a single compilation unit
-struct Crate : public WithInnerAttrs
+class Crate : public WithInnerAttrs
{
// dodgy spacing required here
/* TODO: is it better to have a vector of items here or a module (implicit
* top-level one)? */
- std::vector<std::unique_ptr<Item> > items;
+ std::vector<std::unique_ptr<Item>> items;
Analysis::NodeMapping mappings;
public:
// Constructor
- Crate (std::vector<std::unique_ptr<Item> > items, AST::AttrVec inner_attrs,
+ Crate (std::vector<std::unique_ptr<Item>> items, AST::AttrVec inner_attrs,
Analysis::NodeMapping mappings)
: WithInnerAttrs (std::move (inner_attrs)), items (std::move (items)),
mappings (mappings)
std::string as_string () const;
const Analysis::NodeMapping &get_mappings () const { return mappings; }
+ std::vector<std::unique_ptr<Item>> &get_items () { return items; }
};
// Base path expression HIR node - abstract
PublicInterface::gather_export_data ()
{
ExportVisItems visitor (context);
- for (auto &item : crate.items)
+ for (auto &item : crate.get_items ())
{
bool is_vis_item = item->get_hir_kind () == HIR::Node::BaseKind::VIS_ITEM;
if (!is_vis_item)
void
TypeResolution::Resolve (HIR::Crate &crate)
{
- for (auto it = crate.items.begin (); it != crate.items.end (); it++)
- TypeCheckItem::Resolve (*it->get ());
+ for (auto &it : crate.get_items ())
+ TypeCheckItem::Resolve (*it);
if (saw_errors ())
return;