aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorArthur Cohen <arthur.cohen@embecosm.com>2023-07-20 15:15:21 +0200
committerCohenArthur <arthur.cohen@embecosm.com>2023-08-02 08:26:27 +0000
commitb7c5b50a4e6cbaf812112ee0a587bb129dca1a54 (patch)
treec30bb634256736f05ffa6dbb03743d3c838cca1d
parentbbeaf4b29c915859d99fbd76ea73c4894b2dda93 (diff)
downloadgcc-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.cc4
-rw-r--r--gcc/rust/resolve/rust-toplevel-name-resolver-2.0.h19
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);