aboutsummaryrefslogtreecommitdiff
path: root/gcc/rust/resolve/rust-finalize-imports-2.0.h
diff options
context:
space:
mode:
authorArthur Cohen <arthur.cohen@embecosm.com>2024-04-06 23:02:51 +0200
committerArthur Cohen <arthur.cohen@embecosm.com>2025-03-19 15:32:12 +0100
commit9047b32383a05b5ef5909de5eed35a0cd3c9a76a (patch)
tree34338ce2e7513fc2040179e4da764cd04ad3ab99 /gcc/rust/resolve/rust-finalize-imports-2.0.h
parent28fe1dac18bc054822ecbf177a9a6cb129f9b1e8 (diff)
downloadgcc-9047b32383a05b5ef5909de5eed35a0cd3c9a76a.zip
gcc-9047b32383a05b5ef5909de5eed35a0cd3c9a76a.tar.gz
gcc-9047b32383a05b5ef5909de5eed35a0cd3c9a76a.tar.bz2
gccrs: imports: Make FinalizeImports a resolver visitor as well
gcc/rust/ChangeLog: * resolve/rust-finalize-imports-2.0.cc (FinalizeImports::go): Turn static method into method. (FinalizeImports::visit): New. * resolve/rust-finalize-imports-2.0.h (class FinalizeImports): Make FinalizeImports a visitor. * resolve/rust-early-name-resolver-2.0.cc (Early::go): Use new FinalizeImports API. (Early::resolve_glob_import): Use new API. (Early::resolve_simple_import): Likewise. (Early::resolve_rebind_import): Likewise. (Early::build_import_mapping): Likewise. * resolve/rust-early-name-resolver-2.0.h: Likewise. * resolve/rust-toplevel-name-resolver-2.0.cc (TopLevel::visit): Likewise. * resolve/rust-toplevel-name-resolver-2.0.h: Likewise.
Diffstat (limited to 'gcc/rust/resolve/rust-finalize-imports-2.0.h')
-rw-r--r--gcc/rust/resolve/rust-finalize-imports-2.0.h23
1 files changed, 19 insertions, 4 deletions
diff --git a/gcc/rust/resolve/rust-finalize-imports-2.0.h b/gcc/rust/resolve/rust-finalize-imports-2.0.h
index ed4dc7d..a8b5ba0 100644
--- a/gcc/rust/resolve/rust-finalize-imports-2.0.h
+++ b/gcc/rust/resolve/rust-finalize-imports-2.0.h
@@ -16,6 +16,8 @@
// along with GCC; see the file COPYING3. If not see
// <http://www.gnu.org/licenses/>.
+#include "rust-ast.h"
+#include "rust-expr.h"
#include "rust-name-resolution-context.h"
#include "rust-toplevel-name-resolver-2.0.h"
#include "rust-early-name-resolver-2.0.h"
@@ -86,12 +88,25 @@ private:
// each ImportKind - easy!
// - yay!
-class FinalizeImports
+class FinalizeImports : DefaultResolver
{
public:
- static void
- go (std::map<TopLevel::ImportKind, Early::ImportData> import_mappings,
- TopLevel &toplevel, NameResolutionContext &ctx);
+ FinalizeImports (
+ std::unordered_map<
+ NodeId, std::vector<std::pair<TopLevel::ImportKind, Early::ImportData>>>
+ &&data,
+ TopLevel &toplevel, NameResolutionContext &ctx);
+
+ void go (AST::Crate &crate);
+
+private:
+ void visit (AST::UseDeclaration &) override;
+
+ std::unordered_map<
+ NodeId, std::vector<std::pair<TopLevel::ImportKind, Early::ImportData>>>
+ data;
+ TopLevel &toplevel;
+ NameResolutionContext &ctx;
};
} // namespace Resolver2_0