diff options
author | bors[bot] <26634292+bors[bot]@users.noreply.github.com> | 2022-07-07 08:53:12 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-07-07 08:53:12 +0000 |
commit | ad0e01dfbba94c0a10019db7c11b13fa0758c1fb (patch) | |
tree | 08c3c9420c8c55d100b3913f1edd86ffc15d75d8 /gcc | |
parent | aafb11016d0c3afb8c5aa22c398f192235159971 (diff) | |
parent | 0da912fc4535110c8568bfd331d05c12fd7056dd (diff) | |
download | gcc-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.cc | 2 | ||||
-rw-r--r-- | gcc/rust/resolve/rust-ast-resolve-path.cc | 8 | ||||
-rw-r--r-- | gcc/rust/resolve/rust-ast-resolve-type.cc | 13 | ||||
-rw-r--r-- | 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 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 > : 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 > : 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 |