From: Arthur Cohen <[email protected]>
gcc/rust/ChangeLog:
* ast/rust-ast-builder.cc (Builder::new_type_param): Add optional extra
trait bounds.
* ast/rust-ast-builder.h: Likewise.
---
gcc/rust/ast/rust-ast-builder.cc | 6 +++++-
gcc/rust/ast/rust-ast-builder.h | 4 +++-
2 files changed, 8 insertions(+), 2 deletions(-)
diff --git a/gcc/rust/ast/rust-ast-builder.cc b/gcc/rust/ast/rust-ast-builder.cc
index 47044df9171..567e6c43509 100644
--- a/gcc/rust/ast/rust-ast-builder.cc
+++ b/gcc/rust/ast/rust-ast-builder.cc
@@ -361,7 +361,8 @@ Builder::new_lifetime_param (LifetimeParam ¶m)
}
std::unique_ptr<GenericParam>
-Builder::new_type_param (TypeParam ¶m)
+Builder::new_type_param (
+ TypeParam ¶m, std::vector<std::unique_ptr<TypeParamBound>> extra_bounds)
{
location_t locus = param.get_locus ();
AST::AttrVec outer_attrs = param.get_outer_attrs ();
@@ -372,6 +373,9 @@ Builder::new_type_param (TypeParam ¶m)
if (param.has_type ())
type = new_type (param.get_type ());
+ for (auto &&extra_bound : extra_bounds)
+ type_param_bounds.emplace_back (std::move (extra_bound));
+
for (const auto &b : param.get_type_param_bounds ())
{
switch (b->get_bound_type ())
diff --git a/gcc/rust/ast/rust-ast-builder.h b/gcc/rust/ast/rust-ast-builder.h
index e5bae6ed6e9..3b9990a4969 100644
--- a/gcc/rust/ast/rust-ast-builder.h
+++ b/gcc/rust/ast/rust-ast-builder.h
@@ -200,7 +200,9 @@ public:
static std::unique_ptr<GenericParam>
new_lifetime_param (LifetimeParam ¶m);
- static std::unique_ptr<GenericParam> new_type_param (TypeParam ¶m);
+ static std::unique_ptr<GenericParam> new_type_param (
+ TypeParam ¶m,
+ std::vector<std::unique_ptr<TypeParamBound>> extra_trait_bounds = {});
static Lifetime new_lifetime (const Lifetime &lifetime);
--
2.45.2