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 &gt : 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 &gt : args.get_type_args ())
-      ResolveType::go (gt.get ());
-  }
-
   void visit (AST::BareFunctionType &fntype) override
   {
     for (auto &param : 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).