diff options
Diffstat (limited to 'gcc/rust/resolve')
-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); |