]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
gccrs: Add some reference getter
authorPierre-Emmanuel Patry <pierre-emmanuel.patry@embecosm.com>
Wed, 25 Oct 2023 14:53:59 +0000 (16:53 +0200)
committerArthur Cohen <arthur.cohen@embecosm.com>
Tue, 16 Jan 2024 18:13:11 +0000 (19:13 +0100)
Visitor pattern requires a getter to children using a mutable reference.

gcc/rust/ChangeLog:

* ast/rust-ast.h: Add some missing mutable reference getters.
* ast/rust-expr.h: Likewise.
* ast/rust-item.h: Likewise.
* ast/rust-path.h: Likewise.

Signed-off-by: Pierre-Emmanuel Patry <pierre-emmanuel.patry@embecosm.com>
gcc/rust/ast/rust-ast.h
gcc/rust/ast/rust-expr.h
gcc/rust/ast/rust-item.h
gcc/rust/ast/rust-path.h

index c4dbd7ef42491569ba2bdd045ca26e56be07be3f..a497ccd846773aaed3b148ab6575b5d3d97e0f7f 100644 (file)
@@ -1408,6 +1408,10 @@ class LifetimeParam : public GenericParam
 public:
   Lifetime get_lifetime () const { return lifetime; }
 
+  Lifetime &get_lifetime () { return lifetime; }
+
+  Attribute &get_outer_attribute () { return outer_attr; }
+
   // Returns whether the lifetime param has any lifetime bounds.
   bool has_lifetime_bounds () const { return !lifetime_bounds.empty (); }
 
index bd59f81b562f283aa35b60b32de7d1c2fabca6f9..f0d663bf6caa17f5c56ec1dfa1a3793f4e8bb515 100644 (file)
@@ -226,6 +226,8 @@ public:
 
   LiteralExpr get_literal () const { return lit_expr; }
 
+  LiteralExpr &get_literal () { return lit_expr; }
+
   void accept_vis (ASTVisitor &vis) override;
 
   bool check_cfg_predicate (const Session &session) const override;
@@ -256,8 +258,12 @@ public:
 
   SimplePath get_path () const { return path; }
 
+  SimplePath &get_path () { return path; }
+
   LiteralExpr get_literal () const { return lit; }
 
+  LiteralExpr &get_literal () { return lit; }
+
   std::string as_string () const override
   {
     return path.as_string () + " = " + lit.as_string ();
index 57059eb06723045a23b5f6bf00e9985741c04386..5af51bc35fcb08a7619ace1ca82b3edab3d87804 100644 (file)
@@ -77,6 +77,8 @@ public:
   // Returns whether the type param has an outer attribute.
   bool has_outer_attribute () const { return !outer_attr.is_empty (); }
 
+  Attribute &get_outer_attribute () { return outer_attr; }
+
   TypeParam (Identifier type_representation, location_t locus = UNDEF_LOCATION,
             std::vector<std::unique_ptr<TypeParamBound>> type_param_bounds
             = std::vector<std::unique_ptr<TypeParamBound>> (),
@@ -472,6 +474,7 @@ public:
   bool get_is_mut () const { return is_mut; }
 
   Lifetime get_lifetime () const { return lifetime; }
+  Lifetime &get_lifetime () { return lifetime; }
 
   NodeId get_node_id () const { return node_id; }
 
@@ -915,7 +918,9 @@ public:
 
   location_t get_locus () const override final { return locus; }
 
-  FunctionQualifiers get_qualifiers () { return qualifiers; }
+  FunctionQualifiers get_qualifiers () const { return qualifiers; }
+
+  FunctionQualifiers &get_qualifiers () { return qualifiers; }
 
   Visibility &get_visibility () { return vis; }
   const Visibility &get_visibility () const { return vis; }
@@ -1299,6 +1304,8 @@ public:
     return path;
   }
 
+  SimplePath &get_path () { return path; }
+
   /* TODO: find way to ensure only PATH_PREFIXED glob_type has path - factory
    * methods? */
 protected:
@@ -1389,6 +1396,8 @@ public:
     return path;
   }
 
+  SimplePath &get_path () { return path; }
+
   std::vector<std::unique_ptr<UseTree>> &get_trees () { return trees; }
 
   const std::vector<std::unique_ptr<UseTree>> &get_trees () const
@@ -1451,6 +1460,8 @@ public:
     return path;
   }
 
+  SimplePath &get_path () { return path; }
+
   const Identifier &get_identifier () const
   {
     rust_assert (has_identifier ());
@@ -1677,6 +1688,8 @@ public:
 
   const FunctionQualifiers &get_qualifiers () const { return qualifiers; }
 
+  FunctionQualifiers &get_qualifiers () { return qualifiers; }
+
   Identifier get_function_name () const { return function_name; }
 
   // TODO: is this better? Or is a "vis_block" better?
@@ -2921,7 +2934,8 @@ public:
   // TODO: is this better? Or is a "vis_block" better?
   WhereClause &get_where_clause () { return where_clause; }
 
-  FunctionQualifiers get_qualifiers () { return qualifiers; }
+  FunctionQualifiers get_qualifiers () const { return qualifiers; }
+  FunctionQualifiers &get_qualifiers () { return qualifiers; }
 };
 
 // Actual trait item function declaration within traits
@@ -3137,7 +3151,9 @@ public:
   SelfParam &get_self_param () { return self_param; }
   const SelfParam &get_self_param () const { return self_param; }
 
-  FunctionQualifiers get_qualifiers () { return qualifiers; }
+  FunctionQualifiers get_qualifiers () const { return qualifiers; }
+
+  FunctionQualifiers &get_qualifiers () { return qualifiers; }
 };
 
 // Actual trait item method declaration within traits
index 9279fdd8c7dd262d549c5f15c232c31f28c55e33..b76664fa7ddb0629154d90059dddb94fda4439b6 100644 (file)
@@ -350,6 +350,8 @@ public:
 
   const Identifier &get_name () const { return name; }
 
+  Attribute &get_outer_attribute () { return outer_attr; }
+
   std::unique_ptr<AST::Type> &get_type ()
   {
     rust_assert (has_type ());