public inbox for gcc-cvs@sourceware.org
help / color / mirror / Atom feed
* [gcc/devel/rust/master] ast: Add ResolveGenericArgs resolver
@ 2022-07-07 11:35 Thomas Schwinge
0 siblings, 0 replies; only message in thread
From: Thomas Schwinge @ 2022-07-07 11:35 UTC (permalink / raw)
To: gcc-cvs
https://gcc.gnu.org/g:0da912fc4535110c8568bfd331d05c12fd7056dd
commit 0da912fc4535110c8568bfd331d05c12fd7056dd
Author: Arthur Cohen <arthur.cohen@embecosm.com>
Date: Tue Jul 5 16:36:09 2022 +0200
ast: Add ResolveGenericArgs resolver
This resolver replaces the helper function
`ResolveType::type_resolve_generic_args` and will later benefit from
more functionality such as generic disambiguation
Diff:
---
gcc/rust/resolve/rust-ast-resolve-expr.cc | 2 +-
gcc/rust/resolve/rust-ast-resolve-path.cc | 8 ++------
gcc/rust/resolve/rust-ast-resolve-type.cc | 13 +++++++++----
gcc/rust/resolve/rust-ast-resolve-type.h | 14 ++++++++------
4 files changed, 20 insertions(+), 17 deletions(-)
diff --git a/gcc/rust/resolve/rust-ast-resolve-expr.cc b/gcc/rust/resolve/rust-ast-resolve-expr.cc
index 2087bad8084..2553c854641 100644
--- a/gcc/rust/resolve/rust-ast-resolve-expr.cc
+++ b/gcc/rust/resolve/rust-ast-resolve-expr.cc
@@ -87,7 +87,7 @@ ResolveExpr::visit (AST::MethodCallExpr &expr)
if (expr.get_method_name ().has_generic_args ())
{
AST::GenericArgs &args = expr.get_method_name ().get_generic_args ();
- ResolveType::type_resolve_generic_args (args);
+ ResolveGenericArgs::go (args);
}
auto const &in_params = expr.get_params ();
diff --git a/gcc/rust/resolve/rust-ast-resolve-path.cc b/gcc/rust/resolve/rust-ast-resolve-path.cc
index 9bd836a5872..a03bfb435b5 100644
--- a/gcc/rust/resolve/rust-ast-resolve-path.cc
+++ b/gcc/rust/resolve/rust-ast-resolve-path.cc
@@ -99,9 +99,7 @@ ResolvePath::resolve_path (AST::PathInExpression *expr)
// resolve any generic args
if (segment.has_generic_args ())
- {
- ResolveType::type_resolve_generic_args (segment.get_generic_args ());
- }
+ ResolveGenericArgs::go (segment.get_generic_args ());
// logic is awkward here there are a few cases
//
@@ -252,9 +250,7 @@ ResolvePath::resolve_path (AST::QualifiedPathInExpression *expr)
// the job of the type system to figure it out but we can resolve any
// generic arguments used
if (segment.has_generic_args ())
- {
- ResolveType::type_resolve_generic_args (segment.get_generic_args ());
- }
+ ResolveGenericArgs::go (segment.get_generic_args ());
}
}
diff --git a/gcc/rust/resolve/rust-ast-resolve-type.cc b/gcc/rust/resolve/rust-ast-resolve-type.cc
index d444e3758cd..910468ed729 100644
--- a/gcc/rust/resolve/rust-ast-resolve-type.cc
+++ b/gcc/rust/resolve/rust-ast-resolve-type.cc
@@ -140,9 +140,7 @@ ResolveRelativeTypePath::go (AST::TypePath &path, NodeId &resolved_node_id)
AST::TypePathSegmentGeneric *s
= static_cast<AST::TypePathSegmentGeneric *> (segment.get ());
if (s->has_generic_args ())
- {
- ResolveType::type_resolve_generic_args (s->get_generic_args ());
- }
+ ResolveGenericArgs::go (s->get_generic_args ());
}
break;
@@ -334,7 +332,7 @@ ResolveRelativeQualTypePath::visit (AST::TypePathSegmentGeneric &seg)
return;
}
- ResolveType::type_resolve_generic_args (seg.get_generic_args ());
+ ResolveGenericArgs::go (seg.get_generic_args ());
}
void
@@ -471,5 +469,12 @@ ResolveTypeToCanonicalPath::ResolveTypeToCanonicalPath ()
: ResolverBase (), result (CanonicalPath::create_empty ())
{}
+void
+ResolveGenericArgs::go (AST::GenericArgs &args)
+{
+ for (auto > : args.get_type_args ())
+ ResolveType::go (gt.get ());
+}
+
} // namespace Resolver
} // namespace Rust
diff --git a/gcc/rust/resolve/rust-ast-resolve-type.h b/gcc/rust/resolve/rust-ast-resolve-type.h
index 946cdd4db18..f933d1ec917 100644
--- a/gcc/rust/resolve/rust-ast-resolve-type.h
+++ b/gcc/rust/resolve/rust-ast-resolve-type.h
@@ -64,12 +64,6 @@ public:
return resolver.resolved_node;
}
- static void type_resolve_generic_args (AST::GenericArgs &args)
- {
- for (auto > : args.get_type_args ())
- ResolveType::go (gt.get ());
- }
-
void visit (AST::BareFunctionType &fntype) override
{
for (auto ¶m : fntype.get_function_params ())
@@ -255,6 +249,14 @@ private:
CanonicalPath result;
};
+class ResolveGenericArgs : public ResolverBase
+{
+ using Rust::Resolver::ResolverBase::visit;
+
+public:
+ static void go (AST::GenericArgs &generic_args);
+};
+
} // namespace Resolver
} // namespace Rust
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2022-07-07 11:35 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-07-07 11:35 [gcc/devel/rust/master] ast: Add ResolveGenericArgs resolver Thomas Schwinge
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).