https://gcc.gnu.org/g:a7914fcc4f9d0e99679b353ca20c631659dbf870

commit r15-8728-ga7914fcc4f9d0e99679b353ca20c631659dbf870
Author: Arthur Cohen <arthur.co...@embecosm.com>
Date:   Wed Jan 15 12:59:51 2025 +0000

    gccrs: ast-builder: Add extra parameter for TypeParam builder
    
    gcc/rust/ChangeLog:
    
            * ast/rust-ast-builder.cc (Builder::new_type_param): Add optional 
extra trait bounds.
            * ast/rust-ast-builder.h: Likewise.

Diff:
---
 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 47044df91714..567e6c435095 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 &param)
 }
 
 std::unique_ptr<GenericParam>
-Builder::new_type_param (TypeParam &param)
+Builder::new_type_param (
+  TypeParam &param, 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 &param)
   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 e5bae6ed6e95..3b9990a4969a 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 &param);
 
-  static std::unique_ptr<GenericParam> new_type_param (TypeParam &param);
+  static std::unique_ptr<GenericParam> new_type_param (
+    TypeParam &param,
+    std::vector<std::unique_ptr<TypeParamBound>> extra_trait_bounds = {});
 
   static Lifetime new_lifetime (const Lifetime &lifetime);

Reply via email to