]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
ast-builder: Add extra parameter for TypeParam builder
authorArthur Cohen <arthur.cohen@embecosm.com>
Wed, 15 Jan 2025 12:59:51 +0000 (12:59 +0000)
committerCohenArthur <arthur.cohen@embecosm.com>
Tue, 21 Jan 2025 13:54:14 +0000 (13:54 +0000)
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
gcc/rust/ast/rust-ast-builder.h

index eccc474187f5fd1554b4029672aefbe908a5de5c..b3ee387ef9c1fdc5e65816f323fe3aeb921a1d52 100644 (file)
@@ -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 ())
index 7e224d3db5ff2f50f69d302ac3932924d2a60ba6..372e355fa9b60e1c38b6b131df3ebf900677bb70 100644 (file)
@@ -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);