diff options
author | Arthur Cohen <arthur.cohen@embecosm.com> | 2023-07-20 15:15:21 +0200 |
---|---|---|
committer | CohenArthur <arthur.cohen@embecosm.com> | 2023-08-02 08:26:27 +0000 |
commit | b7c5b50a4e6cbaf812112ee0a587bb129dca1a54 (patch) | |
tree | c30bb634256736f05ffa6dbb03743d3c838cca1d | |
parent | bbeaf4b29c915859d99fbd76ea73c4894b2dda93 (diff) | |
download | gcc-b7c5b50a4e6cbaf812112ee0a587bb129dca1a54.zip gcc-b7c5b50a4e6cbaf812112ee0a587bb129dca1a54.tar.gz gcc-b7c5b50a4e6cbaf812112ee0a587bb129dca1a54.tar.bz2 |
nr2.0: Use DefaultResolver for TopLevel
gcc/rust/ChangeLog:
* resolve/rust-toplevel-name-resolver-2.0.h
(class TopLevel): Inherit from DefaultResolver
* resolve/rust-toplevel-name-resolver-2.0.cc
(TopLevel::TopLevel): Remove unecessary methods
-rw-r--r-- | gcc/rust/resolve/rust-toplevel-name-resolver-2.0.cc | 4 | ||||
-rw-r--r-- | gcc/rust/resolve/rust-toplevel-name-resolver-2.0.h | 19 |
2 files changed, 15 insertions, 8 deletions
diff --git a/gcc/rust/resolve/rust-toplevel-name-resolver-2.0.cc b/gcc/rust/resolve/rust-toplevel-name-resolver-2.0.cc index 73c857e..7923342 100644 --- a/gcc/rust/resolve/rust-toplevel-name-resolver-2.0.cc +++ b/gcc/rust/resolve/rust-toplevel-name-resolver-2.0.cc @@ -23,7 +23,9 @@ namespace Rust { namespace Resolver2_0 { -TopLevel::TopLevel (NameResolutionContext &resolver) : ctx (resolver) {} +TopLevel::TopLevel (NameResolutionContext &resolver) + : DefaultResolver (resolver) +{} template <typename T> void diff --git a/gcc/rust/resolve/rust-toplevel-name-resolver-2.0.h b/gcc/rust/resolve/rust-toplevel-name-resolver-2.0.h index db2033f..93d40b8 100644 --- a/gcc/rust/resolve/rust-toplevel-name-resolver-2.0.h +++ b/gcc/rust/resolve/rust-toplevel-name-resolver-2.0.h @@ -21,7 +21,7 @@ #include "rust-ast-visitor.h" #include "rust-name-resolution-context.h" -#include "rust-ast-resolve-base.h" +#include "rust-default-resolver.h" namespace Rust { namespace Resolver2_0 { @@ -31,10 +31,9 @@ namespace Resolver2_0 { * crate, and inserting them into the proper namespaces. These definitions can * then be accessed by subsequent resolvers, such as `Early` or `Late`. */ -// TODO: Merge Resolver namespaces and use `public ResolverBase` -class TopLevel : public ::Rust::Resolver::ResolverBase +class TopLevel : public DefaultResolver { - using ::Rust::Resolver::ResolverBase::visit; + using DefaultResolver::visit; public: TopLevel (NameResolutionContext &resolver); @@ -42,9 +41,15 @@ public: void go (AST::Crate &crate); private: - NameResolutionContext &ctx; - - // FIXME: Documentation + /** + * Insert a new definition or error out if a definition with the same name was + * already present in the same namespace in the same scope. + * + * @param identifier The identifier of the definition to add. + * @param node A reference to the node, so we can get its `NodeId` and + * location. + * @param ns The namespace in which to add the definition. + */ template <typename T> void insert_or_error_out (const Identifier &identifier, const T &node, Namespace ns); |