diff options
author | Pierre-Emmanuel Patry <pierre-emmanuel.patry@embecosm.com> | 2023-10-25 16:53:59 +0200 |
---|---|---|
committer | CohenArthur <arthur.cohen@embecosm.com> | 2023-11-06 17:13:22 +0000 |
commit | ebe2f98aa53ef5ac7c0097f8fd87c9a713b50e07 (patch) | |
tree | 239bb38ba652da29f1f808cf53eead177ee8d5ba | |
parent | e7caf68fe08f371102b605450e5a9ab516e2a90b (diff) | |
download | gcc-ebe2f98aa53ef5ac7c0097f8fd87c9a713b50e07.zip gcc-ebe2f98aa53ef5ac7c0097f8fd87c9a713b50e07.tar.gz gcc-ebe2f98aa53ef5ac7c0097f8fd87c9a713b50e07.tar.bz2 |
Add some reference getter
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>
-rw-r--r-- | gcc/rust/ast/rust-ast.h | 4 | ||||
-rw-r--r-- | gcc/rust/ast/rust-expr.h | 6 | ||||
-rw-r--r-- | gcc/rust/ast/rust-item.h | 22 | ||||
-rw-r--r-- | gcc/rust/ast/rust-path.h | 2 |
4 files changed, 31 insertions, 3 deletions
diff --git a/gcc/rust/ast/rust-ast.h b/gcc/rust/ast/rust-ast.h index 8b3f6fe..26c4743 100644 --- a/gcc/rust/ast/rust-ast.h +++ b/gcc/rust/ast/rust-ast.h @@ -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 (); } diff --git a/gcc/rust/ast/rust-expr.h b/gcc/rust/ast/rust-expr.h index bd59f81..f0d663b 100644 --- a/gcc/rust/ast/rust-expr.h +++ b/gcc/rust/ast/rust-expr.h @@ -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 (); diff --git a/gcc/rust/ast/rust-item.h b/gcc/rust/ast/rust-item.h index bcc33dc..ac16b55 100644 --- a/gcc/rust/ast/rust-item.h +++ b/gcc/rust/ast/rust-item.h @@ -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 diff --git a/gcc/rust/ast/rust-path.h b/gcc/rust/ast/rust-path.h index 7ac9cdd..d133ba9 100644 --- a/gcc/rust/ast/rust-path.h +++ b/gcc/rust/ast/rust-path.h @@ -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 ()); |