From: Arthur Cohen Date: Wed, 15 Jan 2025 12:59:51 +0000 (+0000) Subject: gccrs: ast-builder: Add extra parameter for TypeParam builder X-Git-Tag: basepoints/gcc-16~825 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=a7914fcc4f9d0e99679b353ca20c631659dbf870;p=thirdparty%2Fgcc.git 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 --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 -Builder::new_type_param (TypeParam ¶m) +Builder::new_type_param ( + TypeParam ¶m, std::vector> 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 new_lifetime_param (LifetimeParam ¶m); - static std::unique_ptr new_type_param (TypeParam ¶m); + static std::unique_ptr new_type_param ( + TypeParam ¶m, + std::vector> extra_trait_bounds = {}); static Lifetime new_lifetime (const Lifetime &lifetime);