From: Pierre-Emmanuel Patry Date: Wed, 25 Oct 2023 14:53:59 +0000 (+0200) Subject: gccrs: Add some reference getter X-Git-Tag: basepoints/gcc-15~2019 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=7065e2dbfee8bd4088c8361158420b6667dfb8ff;p=thirdparty%2Fgcc.git gccrs: 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 --- diff --git a/gcc/rust/ast/rust-ast.h b/gcc/rust/ast/rust-ast.h index c4dbd7ef4249..a497ccd84677 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 bd59f81b562f..f0d663bf6caa 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 57059eb06723..5af51bc35fcb 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> type_param_bounds = std::vector> (), @@ -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> &get_trees () { return trees; } const std::vector> &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 9279fdd8c7dd..b76664fa7ddb 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 &get_type () { rust_assert (has_type ());