aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorbors[bot] <26634292+bors[bot]@users.noreply.github.com>2022-07-07 08:53:12 +0000
committerGitHub <noreply@github.com>2022-07-07 08:53:12 +0000
commitad0e01dfbba94c0a10019db7c11b13fa0758c1fb (patch)
tree08c3c9420c8c55d100b3913f1edd86ffc15d75d8 /gcc
parentaafb11016d0c3afb8c5aa22c398f192235159971 (diff)
parent0da912fc4535110c8568bfd331d05c12fd7056dd (diff)
downloadgcc-ad0e01dfbba94c0a10019db7c11b13fa0758c1fb.zip
gcc-ad0e01dfbba94c0a10019db7c11b13fa0758c1fb.tar.gz
gcc-ad0e01dfbba94c0a10019db7c11b13fa0758c1fb.tar.bz2
Merge #1354
1354: ast: Add ResolveGenericArgs resolver r=CohenArthur a=CohenArthur This resolver replaces the helper function `ResolveType::type_resolve_generic_args` and will later benefit from more functionality such as generic disambiguation Co-authored-by: Arthur Cohen <arthur.cohen@embecosm.com>
Diffstat (limited to 'gcc')
-rw-r--r--gcc/rust/resolve/rust-ast-resolve-expr.cc2
-rw-r--r--gcc/rust/resolve/rust-ast-resolve-path.cc8
-rw-r--r--gcc/rust/resolve/rust-ast-resolve-type.cc13
-rw-r--r--gcc/rust/resolve/rust-ast-resolve-type.h14
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 2087bad..2553c85 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 9bd836a..a03bfb4 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 d444e37..910468e 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 946cdd4..f933d1e 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