From 11fbade585049d2ff2f51f66a1eb6106deaec619 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Marc=20Poulhi=C3=A8s?= Date: Fri, 30 Jun 2023 00:44:52 +0200 Subject: [PATCH] gccrs: refactor: make crate.items private MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit 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 --- gcc/rust/backend/rust-compile.cc | 2 +- gcc/rust/checks/errors/privacy/rust-privacy-check.cc | 4 +--- gcc/rust/checks/errors/privacy/rust-privacy-reporter.cc | 2 +- .../checks/errors/privacy/rust-pub-restricted-visitor.cc | 2 +- gcc/rust/checks/errors/privacy/rust-visibility-resolver.cc | 2 +- gcc/rust/checks/errors/rust-const-checker.cc | 2 +- gcc/rust/checks/errors/rust-unsafe-checker.cc | 2 +- gcc/rust/checks/lints/rust-lint-marklive.cc | 6 ++---- gcc/rust/checks/lints/rust-lint-scan-deadcode.h | 6 ++---- gcc/rust/hir/rust-hir-dump.cc | 2 +- gcc/rust/hir/tree/rust-hir.h | 7 ++++--- gcc/rust/metadata/rust-export-metadata.cc | 2 +- gcc/rust/typecheck/rust-hir-type-check.cc | 4 ++-- 13 files changed, 19 insertions(+), 24 deletions(-) diff --git a/gcc/rust/backend/rust-compile.cc b/gcc/rust/backend/rust-compile.cc index b7d0741a23c3..6867737801ad 100644 --- a/gcc/rust/backend/rust-compile.cc +++ b/gcc/rust/backend/rust-compile.cc @@ -43,7 +43,7 @@ CompileCrate::Compile (HIR::Crate &crate, Context *ctx) void CompileCrate::go () { - for (auto &item : crate.items) + for (auto &item : crate.get_items ()) CompileItem::compile (item.get (), ctx); } diff --git a/gcc/rust/checks/errors/privacy/rust-privacy-check.cc b/gcc/rust/checks/errors/privacy/rust-privacy-check.cc index f1c9950ee15c..6f2059d15de3 100644 --- a/gcc/rust/checks/errors/privacy/rust-privacy-check.cc +++ b/gcc/rust/checks/errors/privacy/rust-privacy-check.cc @@ -45,9 +45,7 @@ Resolver::resolve (HIR::Crate &crate) 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) { diff --git a/gcc/rust/checks/errors/privacy/rust-privacy-reporter.cc b/gcc/rust/checks/errors/privacy/rust-privacy-reporter.cc index b403b324ccc1..5d2f533a1b16 100644 --- a/gcc/rust/checks/errors/privacy/rust-privacy-reporter.cc +++ b/gcc/rust/checks/errors/privacy/rust-privacy-reporter.cc @@ -34,7 +34,7 @@ PrivacyReporter::PrivacyReporter ( void PrivacyReporter::go (HIR::Crate &crate) { - for (auto &item : crate.items) + for (auto &item : crate.get_items ()) item->accept_vis (*this); } diff --git a/gcc/rust/checks/errors/privacy/rust-pub-restricted-visitor.cc b/gcc/rust/checks/errors/privacy/rust-pub-restricted-visitor.cc index 9e235463a7af..a800f65297d1 100644 --- a/gcc/rust/checks/errors/privacy/rust-pub-restricted-visitor.cc +++ b/gcc/rust/checks/errors/privacy/rust-pub-restricted-visitor.cc @@ -57,7 +57,7 @@ PubRestrictedVisitor::go (HIR::Crate &crate) // 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) { diff --git a/gcc/rust/checks/errors/privacy/rust-visibility-resolver.cc b/gcc/rust/checks/errors/privacy/rust-visibility-resolver.cc index 49524222c865..dc6ae0ead0f6 100644 --- a/gcc/rust/checks/errors/privacy/rust-visibility-resolver.cc +++ b/gcc/rust/checks/errors/privacy/rust-visibility-resolver.cc @@ -37,7 +37,7 @@ VisibilityResolver::go (HIR::Crate &crate) 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) { diff --git a/gcc/rust/checks/errors/rust-const-checker.cc b/gcc/rust/checks/errors/rust-const-checker.cc index 524374d9f3b9..74f0617be8d9 100644 --- a/gcc/rust/checks/errors/rust-const-checker.cc +++ b/gcc/rust/checks/errors/rust-const-checker.cc @@ -33,7 +33,7 @@ ConstChecker::ConstChecker () void ConstChecker::go (HIR::Crate &crate) { - for (auto &item : crate.items) + for (auto &item : crate.get_items ()) item->accept_vis (*this); } diff --git a/gcc/rust/checks/errors/rust-unsafe-checker.cc b/gcc/rust/checks/errors/rust-unsafe-checker.cc index c52c0b862c0d..2b60cd610112 100644 --- a/gcc/rust/checks/errors/rust-unsafe-checker.cc +++ b/gcc/rust/checks/errors/rust-unsafe-checker.cc @@ -34,7 +34,7 @@ UnsafeChecker::UnsafeChecker () void UnsafeChecker::go (HIR::Crate &crate) { - for (auto &item : crate.items) + for (auto &item : crate.get_items ()) item->accept_vis (*this); } diff --git a/gcc/rust/checks/lints/rust-lint-marklive.cc b/gcc/rust/checks/lints/rust-lint-marklive.cc index a92395fb513b..8787a9d85502 100644 --- a/gcc/rust/checks/lints/rust-lint-marklive.cc +++ b/gcc/rust/checks/lints/rust-lint-marklive.cc @@ -41,10 +41,8 @@ public: static std::vector 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 (); } diff --git a/gcc/rust/checks/lints/rust-lint-scan-deadcode.h b/gcc/rust/checks/lints/rust-lint-scan-deadcode.h index f84d35690485..ffc07d3e7454 100644 --- a/gcc/rust/checks/lints/rust-lint-scan-deadcode.h +++ b/gcc/rust/checks/lints/rust-lint-scan-deadcode.h @@ -44,10 +44,8 @@ public: { std::set 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 diff --git a/gcc/rust/hir/rust-hir-dump.cc b/gcc/rust/hir/rust-hir-dump.cc index baebca724476..52c1ebeed5c1 100644 --- a/gcc/rust/hir/rust-hir-dump.cc +++ b/gcc/rust/hir/rust-hir-dump.cc @@ -46,7 +46,7 @@ Dump::go (HIR::Crate &crate) stream << "items: ["; stream << indentation; - for (const auto &item : crate.items) + for (const auto &item : crate.get_items ()) { stream << std::endl; item->accept_vis (*this); diff --git a/gcc/rust/hir/tree/rust-hir.h b/gcc/rust/hir/tree/rust-hir.h index 8b60d105f27e..662cbc685d8c 100644 --- a/gcc/rust/hir/tree/rust-hir.h +++ b/gcc/rust/hir/tree/rust-hir.h @@ -863,18 +863,18 @@ protected: }; // 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 > items; + std::vector> items; Analysis::NodeMapping mappings; public: // Constructor - Crate (std::vector > items, AST::AttrVec inner_attrs, + Crate (std::vector> items, AST::AttrVec inner_attrs, Analysis::NodeMapping mappings) : WithInnerAttrs (std::move (inner_attrs)), items (std::move (items)), mappings (mappings) @@ -912,6 +912,7 @@ public: std::string as_string () const; const Analysis::NodeMapping &get_mappings () const { return mappings; } + std::vector> &get_items () { return items; } }; // Base path expression HIR node - abstract diff --git a/gcc/rust/metadata/rust-export-metadata.cc b/gcc/rust/metadata/rust-export-metadata.cc index ea251f8f36a0..493e73bb4ee3 100644 --- a/gcc/rust/metadata/rust-export-metadata.cc +++ b/gcc/rust/metadata/rust-export-metadata.cc @@ -220,7 +220,7 @@ void 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) diff --git a/gcc/rust/typecheck/rust-hir-type-check.cc b/gcc/rust/typecheck/rust-hir-type-check.cc index 8df44938b2fa..7c1477d4f4d7 100644 --- a/gcc/rust/typecheck/rust-hir-type-check.cc +++ b/gcc/rust/typecheck/rust-hir-type-check.cc @@ -33,8 +33,8 @@ namespace Resolver { 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; -- 2.47.2