From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 1643) id 2265F3842AD1; Wed, 29 Jun 2022 10:27:10 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 2265F3842AD1 Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: Thomas Schwinge To: gcc-cvs@gcc.gnu.org Subject: [gcc/devel/rust/master] Remove unused parent NodeId mappings X-Act-Checkin: gcc X-Git-Author: Philip Herron X-Git-Refname: refs/heads/devel/rust/master X-Git-Oldrev: 198d0dfbfadbb1f4593d61a15f707b90a91253c8 X-Git-Newrev: b9fffb15587d4e45796e1ac1b230119f38f10662 Message-Id: <20220629102710.2265F3842AD1@sourceware.org> Date: Wed, 29 Jun 2022 10:27:10 +0000 (GMT) X-BeenThere: gcc-cvs@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-cvs mailing list List-Unsubscribe: , List-Archive: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 29 Jun 2022 10:27:10 -0000 https://gcc.gnu.org/g:b9fffb15587d4e45796e1ac1b230119f38f10662 commit b9fffb15587d4e45796e1ac1b230119f38f10662 Author: Philip Herron Date: Mon Jun 27 12:39:41 2022 +0100 Remove unused parent NodeId mappings Diff: --- gcc/rust/Make-lang.in | 1 + gcc/rust/resolve/rust-ast-resolve-base.cc | 2 +- gcc/rust/resolve/rust-ast-resolve-base.h | 5 +- gcc/rust/resolve/rust-ast-resolve-expr.cc | 151 +++++++++++---------- gcc/rust/resolve/rust-ast-resolve-expr.h | 15 +- gcc/rust/resolve/rust-ast-resolve-implitem.h | 7 +- gcc/rust/resolve/rust-ast-resolve-item.cc | 86 ++++++------ gcc/rust/resolve/rust-ast-resolve-item.h | 16 +-- gcc/rust/resolve/rust-ast-resolve-path.cc | 14 +- gcc/rust/resolve/rust-ast-resolve-path.h | 8 +- gcc/rust/resolve/rust-ast-resolve-pattern.cc | 19 ++- gcc/rust/resolve/rust-ast-resolve-pattern.h | 12 +- gcc/rust/resolve/rust-ast-resolve-stmt.h | 47 +++---- .../resolve/rust-ast-resolve-struct-expr-field.cc | 61 +++++++++ .../resolve/rust-ast-resolve-struct-expr-field.h | 18 +-- gcc/rust/resolve/rust-ast-resolve-toplevel.h | 5 +- gcc/rust/resolve/rust-ast-resolve-type.cc | 22 ++- gcc/rust/resolve/rust-ast-resolve-type.h | 62 +++------ gcc/rust/resolve/rust-ast-resolve.cc | 25 ---- gcc/rust/resolve/rust-ast-verify-assignee.h | 4 +- 20 files changed, 281 insertions(+), 299 deletions(-) diff --git a/gcc/rust/Make-lang.in b/gcc/rust/Make-lang.in index 6b0c4d79856..cfe23728b8d 100644 --- a/gcc/rust/Make-lang.in +++ b/gcc/rust/Make-lang.in @@ -97,6 +97,7 @@ GRS_OBJS = \ rust/rust-ast-resolve-type.o \ rust/rust-ast-resolve-path.o \ rust/rust-ast-resolve-stmt.o \ + rust/rust-ast-resolve-struct-expr-field.o \ rust/rust-hir-type-check.o \ rust/rust-privacy-check.o \ rust/rust-privacy-ctx.o \ diff --git a/gcc/rust/resolve/rust-ast-resolve-base.cc b/gcc/rust/resolve/rust-ast-resolve-base.cc index cdc1a66b833..2a78918fbdb 100644 --- a/gcc/rust/resolve/rust-ast-resolve-base.cc +++ b/gcc/rust/resolve/rust-ast-resolve-base.cc @@ -30,7 +30,7 @@ ResolverBase::resolve_visibility (const AST::Visibility &vis) if (vis.has_path ()) { auto path = vis.get_path (); - ResolvePath::go (&path, parent); + ResolvePath::go (&path); // Do we need to lookup something here? // Is it just about resolving the names correctly so we can look them up diff --git a/gcc/rust/resolve/rust-ast-resolve-base.h b/gcc/rust/resolve/rust-ast-resolve-base.h index 61583fc96dd..32f30bcea62 100644 --- a/gcc/rust/resolve/rust-ast-resolve-base.h +++ b/gcc/rust/resolve/rust-ast-resolve-base.h @@ -200,9 +200,9 @@ public: void visit (AST::BareFunctionType &); protected: - ResolverBase (NodeId parent) + ResolverBase () : resolver (Resolver::get ()), mappings (Analysis::Mappings::get ()), - resolved_node (UNKNOWN_NODEID), parent (parent) + resolved_node (UNKNOWN_NODEID) {} /** @@ -213,7 +213,6 @@ protected: Resolver *resolver; Analysis::Mappings *mappings; NodeId resolved_node; - NodeId parent; }; } // namespace Resolver diff --git a/gcc/rust/resolve/rust-ast-resolve-expr.cc b/gcc/rust/resolve/rust-ast-resolve-expr.cc index 0ae1847e315..e9127e629df 100644 --- a/gcc/rust/resolve/rust-ast-resolve-expr.cc +++ b/gcc/rust/resolve/rust-ast-resolve-expr.cc @@ -28,17 +28,17 @@ namespace Rust { namespace Resolver { void -ResolveExpr::go (AST::Expr *expr, NodeId parent, const CanonicalPath &prefix, +ResolveExpr::go (AST::Expr *expr, const CanonicalPath &prefix, const CanonicalPath &canonical_prefix) { - ResolveExpr resolver (parent, prefix, canonical_prefix); + ResolveExpr resolver (prefix, canonical_prefix); expr->accept_vis (resolver); } void ResolveExpr::visit (AST::TupleIndexExpr &expr) { - resolve_expr (expr.get_tuple_expr ().get (), expr.get_node_id ()); + ResolveExpr::go (expr.get_tuple_expr ().get (), prefix, canonical_prefix); } void @@ -48,41 +48,41 @@ ResolveExpr::visit (AST::TupleExpr &expr) return; for (auto &elem : expr.get_tuple_elems ()) - resolve_expr (elem.get (), expr.get_node_id ()); + ResolveExpr::go (elem.get (), prefix, canonical_prefix); } void ResolveExpr::visit (AST::PathInExpression &expr) { - ResolvePath::go (&expr, parent); + ResolvePath::go (&expr); } void ResolveExpr::visit (AST::QualifiedPathInExpression &expr) { - ResolvePath::go (&expr, parent); + ResolvePath::go (&expr); } void ResolveExpr::visit (AST::ReturnExpr &expr) { if (expr.has_returned_expr ()) - resolve_expr (expr.get_returned_expr ().get (), expr.get_node_id ()); + ResolveExpr::go (expr.get_returned_expr ().get (), prefix, + canonical_prefix); } void ResolveExpr::visit (AST::CallExpr &expr) { - resolve_expr (expr.get_function_expr ().get (), expr.get_node_id ()); - auto const &in_params = expr.get_params (); - for (auto ¶m : in_params) - resolve_expr (param.get (), expr.get_node_id ()); + ResolveExpr::go (expr.get_function_expr ().get (), prefix, canonical_prefix); + for (auto ¶m : expr.get_params ()) + ResolveExpr::go (param.get (), prefix, canonical_prefix); } void ResolveExpr::visit (AST::MethodCallExpr &expr) { - resolve_expr (expr.get_receiver_expr ().get (), expr.get_node_id ()); + ResolveExpr::go (expr.get_receiver_expr ().get (), prefix, canonical_prefix); if (expr.get_method_name ().has_generic_args ()) { @@ -92,14 +92,14 @@ ResolveExpr::visit (AST::MethodCallExpr &expr) auto const &in_params = expr.get_params (); for (auto ¶m : in_params) - resolve_expr (param.get (), expr.get_node_id ()); + ResolveExpr::go (param.get (), prefix, canonical_prefix); } void ResolveExpr::visit (AST::AssignmentExpr &expr) { - resolve_expr (expr.get_left_expr ().get (), expr.get_node_id ()); - resolve_expr (expr.get_right_expr ().get (), expr.get_node_id ()); + ResolveExpr::go (expr.get_left_expr ().get (), prefix, canonical_prefix); + ResolveExpr::go (expr.get_right_expr ().get (), prefix, canonical_prefix); // need to verify the assignee VerifyAsignee::go (expr.get_left_expr ().get (), expr.get_node_id ()); @@ -130,15 +130,15 @@ ResolveExpr::visit (AST::IdentifierExpr &expr) void ResolveExpr::visit (AST::ArithmeticOrLogicalExpr &expr) { - resolve_expr (expr.get_left_expr ().get (), expr.get_node_id ()); - resolve_expr (expr.get_right_expr ().get (), expr.get_node_id ()); + ResolveExpr::go (expr.get_left_expr ().get (), prefix, canonical_prefix); + ResolveExpr::go (expr.get_right_expr ().get (), prefix, canonical_prefix); } void ResolveExpr::visit (AST::CompoundAssignmentExpr &expr) { - resolve_expr (expr.get_left_expr ().get (), expr.get_node_id ()); - resolve_expr (expr.get_right_expr ().get (), expr.get_node_id ()); + ResolveExpr::go (expr.get_left_expr ().get (), prefix, canonical_prefix); + ResolveExpr::go (expr.get_right_expr ().get (), prefix, canonical_prefix); // need to verify the assignee VerifyAsignee::go (expr.get_left_expr ().get (), expr.get_node_id ()); @@ -147,57 +147,57 @@ ResolveExpr::visit (AST::CompoundAssignmentExpr &expr) void ResolveExpr::visit (AST::ComparisonExpr &expr) { - resolve_expr (expr.get_left_expr ().get (), expr.get_node_id ()); - resolve_expr (expr.get_right_expr ().get (), expr.get_node_id ()); + ResolveExpr::go (expr.get_left_expr ().get (), prefix, canonical_prefix); + ResolveExpr::go (expr.get_right_expr ().get (), prefix, canonical_prefix); } void ResolveExpr::visit (AST::LazyBooleanExpr &expr) { - resolve_expr (expr.get_left_expr ().get (), expr.get_node_id ()); - resolve_expr (expr.get_right_expr ().get (), expr.get_node_id ()); + ResolveExpr::go (expr.get_left_expr ().get (), prefix, canonical_prefix); + ResolveExpr::go (expr.get_right_expr ().get (), prefix, canonical_prefix); } void ResolveExpr::visit (AST::NegationExpr &expr) { - resolve_expr (expr.get_negated_expr ().get (), expr.get_node_id ()); + ResolveExpr::go (expr.get_negated_expr ().get (), prefix, canonical_prefix); } void ResolveExpr::visit (AST::TypeCastExpr &expr) { ResolveType::go (expr.get_type_to_cast_to ().get (), expr.get_node_id ()); - resolve_expr (expr.get_casted_expr ().get (), expr.get_node_id ()); + ResolveExpr::go (expr.get_casted_expr ().get (), prefix, canonical_prefix); } void ResolveExpr::visit (AST::IfExpr &expr) { - resolve_expr (expr.get_condition_expr ().get (), expr.get_node_id ()); - resolve_expr (expr.get_if_block ().get (), expr.get_node_id ()); + ResolveExpr::go (expr.get_condition_expr ().get (), prefix, canonical_prefix); + ResolveExpr::go (expr.get_if_block ().get (), prefix, canonical_prefix); } void ResolveExpr::visit (AST::IfExprConseqElse &expr) { - resolve_expr (expr.get_condition_expr ().get (), expr.get_node_id ()); - resolve_expr (expr.get_if_block ().get (), expr.get_node_id ()); - resolve_expr (expr.get_else_block ().get (), expr.get_node_id ()); + ResolveExpr::go (expr.get_condition_expr ().get (), prefix, canonical_prefix); + ResolveExpr::go (expr.get_if_block ().get (), prefix, canonical_prefix); + ResolveExpr::go (expr.get_else_block ().get (), prefix, canonical_prefix); } void ResolveExpr::visit (AST::IfExprConseqIf &expr) { - resolve_expr (expr.get_condition_expr ().get (), expr.get_node_id ()); - resolve_expr (expr.get_if_block ().get (), expr.get_node_id ()); - resolve_expr (expr.get_conseq_if_expr ().get (), expr.get_node_id ()); + ResolveExpr::go (expr.get_condition_expr ().get (), prefix, canonical_prefix); + ResolveExpr::go (expr.get_if_block ().get (), prefix, canonical_prefix); + ResolveExpr::go (expr.get_conseq_if_expr ().get (), prefix, canonical_prefix); } void ResolveExpr::visit (AST::IfLetExpr &expr) { - resolve_expr (expr.get_value_expr ().get (), expr.get_node_id ()); + ResolveExpr::go (expr.get_value_expr ().get (), prefix, canonical_prefix); NodeId scope_node_id = expr.get_node_id (); resolver->get_name_scope ().push (scope_node_id); @@ -209,10 +209,10 @@ ResolveExpr::visit (AST::IfLetExpr &expr) for (auto &pattern : expr.get_patterns ()) { - PatternDeclaration::go (pattern.get (), expr.get_node_id ()); + PatternDeclaration::go (pattern.get ()); } - resolve_expr (expr.get_if_block ().get (), expr.get_node_id ()); + ResolveExpr::go (expr.get_if_block ().get (), prefix, canonical_prefix); resolver->get_name_scope ().pop (); resolver->get_type_scope ().pop (); @@ -233,19 +233,19 @@ ResolveExpr::visit (AST::BlockExpr &expr) for (auto &s : expr.get_statements ()) { if (s->is_item ()) - ResolveStmt::go (s.get (), s->get_node_id (), prefix, canonical_prefix, + ResolveStmt::go (s.get (), prefix, canonical_prefix, CanonicalPath::create_empty ()); } for (auto &s : expr.get_statements ()) { if (!s->is_item ()) - ResolveStmt::go (s.get (), s->get_node_id (), prefix, canonical_prefix, + ResolveStmt::go (s.get (), prefix, canonical_prefix, CanonicalPath::create_empty ()); } if (expr.has_tail_expr ()) - resolve_expr (expr.get_tail_expr ().get (), expr.get_node_id ()); + ResolveExpr::go (expr.get_tail_expr ().get (), prefix, canonical_prefix); resolver->get_name_scope ().pop (); resolver->get_type_scope ().pop (); @@ -262,7 +262,7 @@ void ResolveExpr::visit (AST::ArrayElemsValues &elems) { for (auto &elem : elems.get_values ()) - resolve_expr (elem.get (), elems.get_node_id ()); + ResolveExpr::go (elem.get (), prefix, canonical_prefix); } void @@ -274,41 +274,41 @@ ResolveExpr::visit (AST::ArrayExpr &expr) void ResolveExpr::visit (AST::ArrayIndexExpr &expr) { - resolve_expr (expr.get_array_expr ().get (), expr.get_node_id ()); - resolve_expr (expr.get_index_expr ().get (), expr.get_node_id ()); + ResolveExpr::go (expr.get_array_expr ().get (), prefix, canonical_prefix); + ResolveExpr::go (expr.get_index_expr ().get (), prefix, canonical_prefix); } void -ResolveExpr::visit (AST::ArrayElemsCopied &elems) +ResolveExpr::visit (AST::ArrayElemsCopied &expr) { - resolve_expr (elems.get_num_copies ().get (), elems.get_node_id ()); - resolve_expr (elems.get_elem_to_copy ().get (), elems.get_node_id ()); + ResolveExpr::go (expr.get_num_copies ().get (), prefix, canonical_prefix); + ResolveExpr::go (expr.get_elem_to_copy ().get (), prefix, canonical_prefix); } // this this an empty struct constructor like 'S {}' void ResolveExpr::visit (AST::StructExprStruct &struct_expr) { - resolve_expr (&struct_expr.get_struct_name (), struct_expr.get_node_id ()); + ResolveExpr::go (&struct_expr.get_struct_name (), prefix, canonical_prefix); } // this this a struct constructor with fields void ResolveExpr::visit (AST::StructExprStructFields &struct_expr) { - resolve_expr (&struct_expr.get_struct_name (), struct_expr.get_node_id ()); + ResolveExpr::go (&struct_expr.get_struct_name (), prefix, canonical_prefix); if (struct_expr.has_struct_base ()) { AST::StructBase &base = struct_expr.get_struct_base (); - resolve_expr (base.get_base_struct ().get (), struct_expr.get_node_id ()); + ResolveExpr::go (base.get_base_struct ().get (), prefix, + canonical_prefix); } auto const &struct_fields = struct_expr.get_fields (); for (auto &struct_field : struct_fields) { - ResolveStructExprField::go (struct_field.get (), - struct_expr.get_node_id (), prefix, + ResolveStructExprField::go (struct_field.get (), prefix, canonical_prefix); } } @@ -316,13 +316,13 @@ ResolveExpr::visit (AST::StructExprStructFields &struct_expr) void ResolveExpr::visit (AST::GroupedExpr &expr) { - resolve_expr (expr.get_expr_in_parens ().get (), expr.get_node_id ()); + ResolveExpr::go (expr.get_expr_in_parens ().get (), prefix, canonical_prefix); } void ResolveExpr::visit (AST::FieldAccessExpr &expr) { - resolve_expr (expr.get_receiver_expr ().get (), expr.get_node_id ()); + ResolveExpr::go (expr.get_receiver_expr ().get (), prefix, canonical_prefix); } void @@ -349,7 +349,7 @@ ResolveExpr::visit (AST::LoopExpr &expr) rust_error_at (locus, "was defined here"); }); } - resolve_expr (expr.get_loop_block ().get (), expr.get_node_id ()); + ResolveExpr::go (expr.get_loop_block ().get (), prefix, canonical_prefix); } void @@ -379,7 +379,7 @@ ResolveExpr::visit (AST::BreakExpr &expr) } if (expr.has_break_expr ()) - resolve_expr (expr.get_break_expr ().get (), expr.get_node_id ()); + ResolveExpr::go (expr.get_break_expr ().get (), prefix, canonical_prefix); } void @@ -406,8 +406,9 @@ ResolveExpr::visit (AST::WhileLoopExpr &expr) rust_error_at (locus, "was defined here"); }); } - resolve_expr (expr.get_predicate_expr ().get (), expr.get_node_id ()); - resolve_expr (expr.get_loop_block ().get (), expr.get_node_id ()); + + ResolveExpr::go (expr.get_predicate_expr ().get (), prefix, canonical_prefix); + ResolveExpr::go (expr.get_loop_block ().get (), prefix, canonical_prefix); } void @@ -445,10 +446,11 @@ ResolveExpr::visit (AST::ForLoopExpr &expr) resolver->push_new_label_rib (resolver->get_type_scope ().peek ()); // resolve the expression - PatternDeclaration::go (expr.get_pattern ().get (), expr.get_node_id ()); - resolve_expr (expr.get_iterator_expr ().get (), expr.get_node_id ()); - resolve_expr (expr.get_loop_block ().get (), expr.get_node_id ()); + PatternDeclaration::go (expr.get_pattern ().get ()); + ResolveExpr::go (expr.get_iterator_expr ().get (), prefix, canonical_prefix); + ResolveExpr::go (expr.get_loop_block ().get (), prefix, canonical_prefix); + // done resolver->get_name_scope ().pop (); resolver->get_type_scope ().pop (); resolver->get_label_scope ().pop (); @@ -484,19 +486,20 @@ ResolveExpr::visit (AST::ContinueExpr &expr) void ResolveExpr::visit (AST::BorrowExpr &expr) { - resolve_expr (expr.get_borrowed_expr ().get (), expr.get_node_id ()); + ResolveExpr::go (expr.get_borrowed_expr ().get (), prefix, canonical_prefix); } void ResolveExpr::visit (AST::DereferenceExpr &expr) { - resolve_expr (expr.get_dereferenced_expr ().get (), expr.get_node_id ()); + ResolveExpr::go (expr.get_dereferenced_expr ().get (), prefix, + canonical_prefix); } void ResolveExpr::visit (AST::MatchExpr &expr) { - resolve_expr (expr.get_scrutinee_expr ().get (), expr.get_node_id ()); + ResolveExpr::go (expr.get_scrutinee_expr ().get (), prefix, canonical_prefix); for (auto &match_case : expr.get_match_cases ()) { // each arm is in its own scope @@ -511,16 +514,17 @@ ResolveExpr::visit (AST::MatchExpr &expr) // resolve AST::MatchArm &arm = match_case.get_arm (); if (arm.has_match_arm_guard ()) - resolve_expr (arm.get_guard_expr ().get (), expr.get_node_id ()); + ResolveExpr::go (arm.get_guard_expr ().get (), prefix, + canonical_prefix); // insert any possible new patterns for (auto &pattern : arm.get_patterns ()) { - PatternDeclaration::go (pattern.get (), expr.get_node_id ()); + PatternDeclaration::go (pattern.get ()); } // resolve the body - resolve_expr (match_case.get_expr ().get (), expr.get_node_id ()); + ResolveExpr::go (match_case.get_expr ().get (), prefix, canonical_prefix); // done resolver->get_name_scope ().pop (); @@ -532,20 +536,20 @@ ResolveExpr::visit (AST::MatchExpr &expr) void ResolveExpr::visit (AST::RangeFromToExpr &expr) { - resolve_expr (expr.get_from_expr ().get (), expr.get_node_id ()); - resolve_expr (expr.get_to_expr ().get (), expr.get_node_id ()); + ResolveExpr::go (expr.get_from_expr ().get (), prefix, canonical_prefix); + ResolveExpr::go (expr.get_to_expr ().get (), prefix, canonical_prefix); } void ResolveExpr::visit (AST::RangeFromExpr &expr) { - resolve_expr (expr.get_from_expr ().get (), expr.get_node_id ()); + ResolveExpr::go (expr.get_from_expr ().get (), prefix, canonical_prefix); } void ResolveExpr::visit (AST::RangeToExpr &expr) { - resolve_expr (expr.get_to_expr ().get (), expr.get_node_id ()); + ResolveExpr::go (expr.get_to_expr ().get (), prefix, canonical_prefix); } void @@ -557,9 +561,14 @@ ResolveExpr::visit (AST::RangeFullExpr &expr) void ResolveExpr::visit (AST::RangeFromToInclExpr &expr) { - resolve_expr (expr.get_from_expr ().get (), expr.get_node_id ()); - resolve_expr (expr.get_to_expr ().get (), expr.get_node_id ()); + ResolveExpr::go (expr.get_from_expr ().get (), prefix, canonical_prefix); + ResolveExpr::go (expr.get_to_expr ().get (), prefix, canonical_prefix); } +ResolveExpr::ResolveExpr (const CanonicalPath &prefix, + const CanonicalPath &canonical_prefix) + : ResolverBase (), prefix (prefix), canonical_prefix (canonical_prefix) +{} + } // namespace Resolver } // namespace Rust diff --git a/gcc/rust/resolve/rust-ast-resolve-expr.h b/gcc/rust/resolve/rust-ast-resolve-expr.h index 4f189decc9d..11a846ac8cd 100644 --- a/gcc/rust/resolve/rust-ast-resolve-expr.h +++ b/gcc/rust/resolve/rust-ast-resolve-expr.h @@ -30,7 +30,7 @@ class ResolveExpr : public ResolverBase using Rust::Resolver::ResolverBase::visit; public: - static void go (AST::Expr *expr, NodeId parent, const CanonicalPath &prefix, + static void go (AST::Expr *expr, const CanonicalPath &prefix, const CanonicalPath &canonical_prefix); void visit (AST::TupleIndexExpr &expr) override; @@ -119,18 +119,9 @@ public: void visit (AST::RangeFromToInclExpr &expr) override; -protected: - void resolve_expr (AST::Expr *e, NodeId parent) - { - ResolveExpr::go (e, parent, prefix, canonical_prefix); - } - private: - ResolveExpr (NodeId parent, const CanonicalPath &prefix, - const CanonicalPath &canonical_prefix) - : ResolverBase (parent), prefix (prefix), - canonical_prefix (canonical_prefix) - {} + ResolveExpr (const CanonicalPath &prefix, + const CanonicalPath &canonical_prefix); const CanonicalPath &prefix; const CanonicalPath &canonical_prefix; diff --git a/gcc/rust/resolve/rust-ast-resolve-implitem.h b/gcc/rust/resolve/rust-ast-resolve-implitem.h index ba184e4a53e..c0cb3a7a311 100644 --- a/gcc/rust/resolve/rust-ast-resolve-implitem.h +++ b/gcc/rust/resolve/rust-ast-resolve-implitem.h @@ -108,7 +108,7 @@ public: private: ResolveToplevelImplItem (const CanonicalPath &prefix) - : ResolverBase (UNKNOWN_NODEID), prefix (prefix) + : ResolverBase (), prefix (prefix) { rust_assert (!prefix.is_empty ()); } @@ -203,8 +203,7 @@ public: private: ResolveTopLevelTraitItems (const CanonicalPath &prefix, const CanonicalPath &canonical_prefix) - : ResolverBase (UNKNOWN_NODEID), prefix (prefix), - canonical_prefix (canonical_prefix) + : ResolverBase (), prefix (prefix), canonical_prefix (canonical_prefix) {} const CanonicalPath &prefix; @@ -260,7 +259,7 @@ public: private: ResolveToplevelExternItem (const CanonicalPath &prefix) - : ResolverBase (UNKNOWN_NODEID), prefix (prefix) + : ResolverBase (), prefix (prefix) {} const CanonicalPath &prefix; diff --git a/gcc/rust/resolve/rust-ast-resolve-item.cc b/gcc/rust/resolve/rust-ast-resolve-item.cc index 9f550ad252b..6c81274b1bd 100644 --- a/gcc/rust/resolve/rust-ast-resolve-item.cc +++ b/gcc/rust/resolve/rust-ast-resolve-item.cc @@ -22,6 +22,12 @@ namespace Rust { namespace Resolver { + +ResolveTraitItems::ResolveTraitItems (const CanonicalPath &prefix, + const CanonicalPath &canonical_prefix) + : ResolverBase (), prefix (prefix), canonical_prefix (canonical_prefix) +{} + void ResolveTraitItems::go (AST::TraitItem *item, const CanonicalPath &prefix, const CanonicalPath &canonical_prefix) @@ -67,7 +73,7 @@ ResolveTraitItems::visit (AST::TraitItemFunc &func) if (function.has_generics ()) { for (auto &generic : function.get_generic_params ()) - ResolveGenericParam::go (generic.get (), func.get_node_id ()); + ResolveGenericParam::go (generic.get ()); } if (function.has_return_type ()) @@ -78,8 +84,7 @@ ResolveTraitItems::visit (AST::TraitItemFunc &func) for (auto ¶m : function.get_function_params ()) { ResolveType::go (param.get_type ().get (), param.get_node_id ()); - PatternDeclaration::go (param.get_pattern ().get (), - param.get_node_id ()); + PatternDeclaration::go (param.get_pattern ().get ()); // the mutability checker needs to verify for immutable decls the number // of assignments are <1. This marks an implicit assignment @@ -92,8 +97,7 @@ ResolveTraitItems::visit (AST::TraitItemFunc &func) // trait items have an optional body if (func.has_definition ()) - ResolveExpr::go (func.get_definition ().get (), func.get_node_id (), path, - cpath); + ResolveExpr::go (func.get_definition ().get (), path, cpath); resolver->get_name_scope ().pop (); resolver->get_type_scope ().pop (); @@ -121,7 +125,7 @@ ResolveTraitItems::visit (AST::TraitItemMethod &func) if (function.has_generics ()) { for (auto &generic : function.get_generic_params ()) - ResolveGenericParam::go (generic.get (), func.get_node_id ()); + ResolveGenericParam::go (generic.get ()); } if (function.has_return_type ()) @@ -142,7 +146,7 @@ ResolveTraitItems::visit (AST::TraitItemMethod &func) AST::TypePath self_type_path (std::move (segments), self_param.get_locus ()); ResolveType::go (&self_type_path, self_param.get_node_id ()); - PatternDeclaration::go (&self_pattern, self_param.get_node_id ()); + PatternDeclaration::go (&self_pattern); resolver->mark_assignment_to_decl (self_pattern.get_node_id (), self_pattern.get_node_id ()); @@ -152,8 +156,7 @@ ResolveTraitItems::visit (AST::TraitItemMethod &func) for (auto ¶m : function.get_function_params ()) { ResolveType::go (param.get_type ().get (), param.get_node_id ()); - PatternDeclaration::go (param.get_pattern ().get (), - param.get_node_id ()); + PatternDeclaration::go (param.get_pattern ().get ()); // the mutability checker needs to verify for immutable decls the number // of assignments are <1. This marks an implicit assignment @@ -166,8 +169,7 @@ ResolveTraitItems::visit (AST::TraitItemMethod &func) // trait items have an optional body if (func.has_definition ()) - ResolveExpr::go (func.get_definition ().get (), func.get_node_id (), path, - cpath); + ResolveExpr::go (func.get_definition ().get (), path, cpath); resolver->get_name_scope ().pop (); resolver->get_type_scope ().pop (); @@ -186,8 +188,7 @@ ResolveTraitItems::visit (AST::TraitItemConst &constant) ResolveType::go (constant.get_type ().get (), constant.get_node_id ()); if (constant.has_expr ()) - ResolveExpr::go (constant.get_expr ().get (), constant.get_node_id (), path, - cpath); + ResolveExpr::go (constant.get_expr ().get (), path, cpath); // the mutability checker needs to verify for immutable decls the number // of assignments are <1. This marks an implicit assignment @@ -196,6 +197,11 @@ ResolveTraitItems::visit (AST::TraitItemConst &constant) constant.get_node_id ()); } +ResolveItem::ResolveItem (const CanonicalPath &prefix, + const CanonicalPath &canonical_prefix) + : ResolverBase (), prefix (prefix), canonical_prefix (canonical_prefix) +{} + void ResolveItem::go (AST::Item *item, const CanonicalPath &prefix, const CanonicalPath &canonical_prefix) @@ -220,7 +226,7 @@ ResolveItem::visit (AST::TypeAlias &alias) if (alias.has_generics ()) { for (auto &generic : alias.get_generic_params ()) - ResolveGenericParam::go (generic.get (), alias.get_node_id ()); + ResolveGenericParam::go (generic.get ()); } if (alias.has_where_clause ()) @@ -285,7 +291,7 @@ ResolveItem::visit (AST::TupleStruct &struct_decl) { for (auto &generic : struct_decl.get_generic_params ()) { - ResolveGenericParam::go (generic.get (), struct_decl.get_node_id ()); + ResolveGenericParam::go (generic.get ()); } } @@ -325,7 +331,7 @@ ResolveItem::visit (AST::Enum &enum_decl) { for (auto &generic : enum_decl.get_generic_params ()) { - ResolveGenericParam::go (generic.get (), enum_decl.get_node_id ()); + ResolveGenericParam::go (generic.get ()); } } @@ -423,7 +429,7 @@ ResolveItem::visit (AST::StructStruct &struct_decl) { for (auto &generic : struct_decl.get_generic_params ()) { - ResolveGenericParam::go (generic.get (), struct_decl.get_node_id ()); + ResolveGenericParam::go (generic.get ()); } } @@ -463,7 +469,7 @@ ResolveItem::visit (AST::Union &union_decl) { for (auto &generic : union_decl.get_generic_params ()) { - ResolveGenericParam::go (generic.get (), union_decl.get_node_id ()); + ResolveGenericParam::go (generic.get ()); } } @@ -493,7 +499,7 @@ ResolveItem::visit (AST::StaticItem &var) var.get_node_id (), cpath); ResolveType::go (var.get_type ().get (), var.get_node_id ()); - ResolveExpr::go (var.get_expr ().get (), var.get_node_id (), path, cpath); + ResolveExpr::go (var.get_expr ().get (), path, cpath); // the mutability checker needs to verify for immutable decls the number // of assignments are <1. This marks an implicit assignment @@ -512,8 +518,7 @@ ResolveItem::visit (AST::ConstantItem &constant) resolve_visibility (constant.get_visibility ()); ResolveType::go (constant.get_type ().get (), constant.get_node_id ()); - ResolveExpr::go (constant.get_expr ().get (), constant.get_node_id (), path, - cpath); + ResolveExpr::go (constant.get_expr ().get (), path, cpath); // the mutability checker needs to verify for immutable decls the number // of assignments are <1. This marks an implicit assignment @@ -545,7 +550,7 @@ ResolveItem::visit (AST::Function &function) if (function.has_generics ()) { for (auto &generic : function.get_generic_params ()) - ResolveGenericParam::go (generic.get (), function.get_node_id ()); + ResolveGenericParam::go (generic.get ()); } // resolve any where clause items @@ -561,8 +566,7 @@ ResolveItem::visit (AST::Function &function) for (auto ¶m : function.get_function_params ()) { ResolveType::go (param.get_type ().get (), param.get_node_id ()); - PatternDeclaration::go (param.get_pattern ().get (), - param.get_node_id ()); + PatternDeclaration::go (param.get_pattern ().get ()); // the mutability checker needs to verify for immutable decls the number // of assignments are <1. This marks an implicit assignment @@ -571,8 +575,7 @@ ResolveItem::visit (AST::Function &function) } // resolve the function body - ResolveExpr::go (function.get_definition ().get (), function.get_node_id (), - path, cpath); + ResolveExpr::go (function.get_definition ().get (), path, cpath); resolver->get_name_scope ().pop (); resolver->get_type_scope ().pop (); @@ -594,7 +597,7 @@ ResolveItem::visit (AST::InherentImpl &impl_block) { for (auto &generic : impl_block.get_generic_params ()) { - ResolveGenericParam::go (generic.get (), impl_block.get_node_id ()); + ResolveGenericParam::go (generic.get ()); } } @@ -608,7 +611,7 @@ ResolveItem::visit (AST::InherentImpl &impl_block) CanonicalPath self_cpath = CanonicalPath::create_empty (); bool canonicalize_type_with_generics = false; NodeId resolved_node - = ResolveType::go (impl_block.get_type ().get (), impl_block.get_node_id (), + = ResolveType::go (impl_block.get_type ().get (), canonicalize_type_with_generics, &self_cpath); if (resolved_node == UNKNOWN_NODEID) { @@ -686,7 +689,7 @@ ResolveItem::visit (AST::Method &method) if (method.has_generics ()) { for (auto &generic : method.get_generic_params ()) - ResolveGenericParam::go (generic.get (), method.get_node_id ()); + ResolveGenericParam::go (generic.get ()); } // resolve any where clause items @@ -711,7 +714,7 @@ ResolveItem::visit (AST::Method &method) AST::TypePath self_type_path (std::move (segments), self_param.get_locus ()); ResolveType::go (&self_type_path, self_param.get_node_id ()); - PatternDeclaration::go (&self_pattern, self_param.get_node_id ()); + PatternDeclaration::go (&self_pattern); resolver->mark_assignment_to_decl (self_pattern.get_node_id (), self_pattern.get_node_id ()); @@ -721,8 +724,7 @@ ResolveItem::visit (AST::Method &method) for (auto ¶m : method.get_function_params ()) { ResolveType::go (param.get_type ().get (), param.get_node_id ()); - PatternDeclaration::go (param.get_pattern ().get (), - param.get_node_id ()); + PatternDeclaration::go (param.get_pattern ().get ()); // the mutability checker needs to verify for immutable decls the number // of assignments are <1. This marks an implicit assignment @@ -735,8 +737,7 @@ ResolveItem::visit (AST::Method &method) ResolveWhereClause::Resolve (method.get_where_clause ()); // resolve the function body - ResolveExpr::go (method.get_definition ().get (), method.get_node_id (), path, - cpath); + ResolveExpr::go (method.get_definition ().get (), path, cpath); resolver->get_name_scope ().pop (); resolver->get_type_scope ().pop (); @@ -759,7 +760,7 @@ ResolveItem::visit (AST::TraitImpl &impl_block) { for (auto &generic : impl_block.get_generic_params ()) { - ResolveGenericParam::go (generic.get (), impl_block.get_node_id ()); + ResolveGenericParam::go (generic.get ()); } } @@ -770,7 +771,7 @@ ResolveItem::visit (AST::TraitImpl &impl_block) CanonicalPath canonical_trait_type = CanonicalPath::create_empty (); bool canonicalize_type_with_generics = false; NodeId trait_resolved_node - = ResolveType::go (&impl_block.get_trait_path (), impl_block.get_node_id (), + = ResolveType::go (&impl_block.get_trait_path (), canonicalize_type_with_generics, &canonical_trait_type); if (trait_resolved_node == UNKNOWN_NODEID) { @@ -781,7 +782,7 @@ ResolveItem::visit (AST::TraitImpl &impl_block) CanonicalPath canonical_impl_type = CanonicalPath::create_empty (); NodeId type_resolved_node - = ResolveType::go (impl_block.get_type ().get (), impl_block.get_node_id (), + = ResolveType::go (impl_block.get_type ().get (), canonicalize_type_with_generics, &canonical_impl_type); if (type_resolved_node == UNKNOWN_NODEID) { @@ -869,7 +870,7 @@ ResolveItem::visit (AST::Trait &trait) for (auto &generic : trait.get_generic_params ()) { - ResolveGenericParam::go (generic.get (), trait.get_node_id ()); + ResolveGenericParam::go (generic.get ()); } // Self is an implicit TypeParam so lets mark it as such @@ -1037,9 +1038,14 @@ ResolveItem::visit (AST::UseDeclaration &use_item) auto to_resolve = flatten_use_dec_to_paths (use_item); for (auto &path : to_resolve) - ResolvePath::go (&path, parent); + ResolvePath::go (&path); } +ResolveImplItems::ResolveImplItems (const CanonicalPath &prefix, + const CanonicalPath &canonical_prefix) + : ResolveItem (prefix, canonical_prefix) +{} + void ResolveImplItems::go (AST::InherentImplItem *item, const CanonicalPath &prefix, const CanonicalPath &canonical_prefix) @@ -1099,7 +1105,7 @@ ResolveExternItem::visit (AST::ExternalFunctionItem &function) if (function.has_generics ()) { for (auto &generic : function.get_generic_params ()) - ResolveGenericParam::go (generic.get (), function.get_node_id ()); + ResolveGenericParam::go (generic.get ()); } if (function.has_return_type ()) diff --git a/gcc/rust/resolve/rust-ast-resolve-item.h b/gcc/rust/resolve/rust-ast-resolve-item.h index e6b11f514cb..2824d09a11e 100644 --- a/gcc/rust/resolve/rust-ast-resolve-item.h +++ b/gcc/rust/resolve/rust-ast-resolve-item.h @@ -46,10 +46,7 @@ public: private: ResolveTraitItems (const CanonicalPath &prefix, - const CanonicalPath &canonical_prefix) - : ResolverBase (UNKNOWN_NODEID), prefix (prefix), - canonical_prefix (canonical_prefix) - {} + const CanonicalPath &canonical_prefix); const CanonicalPath &prefix; const CanonicalPath &canonical_prefix; @@ -93,10 +90,7 @@ protected: void resolve_extern_item (AST::ExternalItem *item); ResolveItem (const CanonicalPath &prefix, - const CanonicalPath &canonical_prefix) - : ResolverBase (UNKNOWN_NODEID), prefix (prefix), - canonical_prefix (canonical_prefix) - {} + const CanonicalPath &canonical_prefix); const CanonicalPath &prefix; const CanonicalPath &canonical_prefix; @@ -116,9 +110,7 @@ public: private: ResolveImplItems (const CanonicalPath &prefix, - const CanonicalPath &canonical_prefix) - : ResolveItem (prefix, canonical_prefix) - {} + const CanonicalPath &canonical_prefix); }; class ResolveExternItem : public ResolverBase @@ -132,7 +124,7 @@ public: void visit (AST::ExternalStaticItem &item) override; private: - ResolveExternItem () : ResolverBase (UNKNOWN_NODEID) {} + ResolveExternItem () : ResolverBase () {} }; } // namespace Resolver diff --git a/gcc/rust/resolve/rust-ast-resolve-path.cc b/gcc/rust/resolve/rust-ast-resolve-path.cc index dbf2df782f9..8135d4d263b 100644 --- a/gcc/rust/resolve/rust-ast-resolve-path.cc +++ b/gcc/rust/resolve/rust-ast-resolve-path.cc @@ -23,24 +23,26 @@ namespace Rust { namespace Resolver { +ResolvePath::ResolvePath () : ResolverBase () {} + void -ResolvePath::go (AST::PathInExpression *expr, NodeId parent) +ResolvePath::go (AST::PathInExpression *expr) { - ResolvePath resolver (parent); + ResolvePath resolver; resolver.resolve_path (expr); } void -ResolvePath::go (AST::QualifiedPathInExpression *expr, NodeId parent) +ResolvePath::go (AST::QualifiedPathInExpression *expr) { - ResolvePath resolver (parent); + ResolvePath resolver; resolver.resolve_path (expr); } void -ResolvePath::go (AST::SimplePath *expr, NodeId parent) +ResolvePath::go (AST::SimplePath *expr) { - ResolvePath resolver (parent); + ResolvePath resolver; resolver.resolve_path (expr); } diff --git a/gcc/rust/resolve/rust-ast-resolve-path.h b/gcc/rust/resolve/rust-ast-resolve-path.h index fc8785f73d5..a9af0c5819c 100644 --- a/gcc/rust/resolve/rust-ast-resolve-path.h +++ b/gcc/rust/resolve/rust-ast-resolve-path.h @@ -29,12 +29,12 @@ class ResolvePath : public ResolverBase using Rust::Resolver::ResolverBase::visit; public: - static void go (AST::PathInExpression *expr, NodeId parent); - static void go (AST::QualifiedPathInExpression *expr, NodeId parent); - static void go (AST::SimplePath *expr, NodeId parent); + static void go (AST::PathInExpression *expr); + static void go (AST::QualifiedPathInExpression *expr); + static void go (AST::SimplePath *expr); private: - ResolvePath (NodeId parent) : ResolverBase (parent) {} + ResolvePath (); void resolve_path (AST::PathInExpression *expr); void resolve_path (AST::QualifiedPathInExpression *expr); diff --git a/gcc/rust/resolve/rust-ast-resolve-pattern.cc b/gcc/rust/resolve/rust-ast-resolve-pattern.cc index 1947212f431..47d85fb523f 100644 --- a/gcc/rust/resolve/rust-ast-resolve-pattern.cc +++ b/gcc/rust/resolve/rust-ast-resolve-pattern.cc @@ -26,13 +26,13 @@ namespace Resolver { void PatternDeclaration::visit (AST::PathInExpression &pattern) { - ResolvePath::go (&pattern, parent); + ResolvePath::go (&pattern); } void PatternDeclaration::visit (AST::TupleStructPattern &pattern) { - ResolvePath::go (&pattern.get_path (), parent); + ResolvePath::go (&pattern.get_path ()); std::unique_ptr &items = pattern.get_items (); switch (items->get_item_type ()) @@ -49,8 +49,7 @@ PatternDeclaration::visit (AST::TupleStructPattern &pattern) for (auto &inner_pattern : items_no_range.get_patterns ()) { - PatternDeclaration::go (inner_pattern.get (), - inner_pattern->get_pattern_node_id ()); + PatternDeclaration::go (inner_pattern.get ()); } } break; @@ -60,7 +59,7 @@ PatternDeclaration::visit (AST::TupleStructPattern &pattern) void PatternDeclaration::visit (AST::StructPattern &pattern) { - ResolvePath::go (&pattern.get_path (), parent); + ResolvePath::go (&pattern.get_path ()); auto &struct_pattern_elems = pattern.get_struct_pattern_elems (); for (auto &field : struct_pattern_elems.get_struct_pattern_fields ()) @@ -130,7 +129,7 @@ PatternDeclaration::visit (AST::TuplePattern &pattern) } static void -resolve_range_pattern_bound (AST::RangePatternBound *bound, NodeId parent) +resolve_range_pattern_bound (AST::RangePatternBound *bound) { switch (bound->get_bound_type ()) { @@ -142,7 +141,7 @@ resolve_range_pattern_bound (AST::RangePatternBound *bound, NodeId parent) AST::RangePatternBoundPath &ref = *static_cast (bound); - ResolvePath::go (&ref.get_path (), parent); + ResolvePath::go (&ref.get_path ()); } break; @@ -150,7 +149,7 @@ resolve_range_pattern_bound (AST::RangePatternBound *bound, NodeId parent) AST::RangePatternBoundQualPath &ref = *static_cast (bound); - ResolvePath::go (&ref.get_qualified_path (), parent); + ResolvePath::go (&ref.get_qualified_path ()); } break; } @@ -159,8 +158,8 @@ resolve_range_pattern_bound (AST::RangePatternBound *bound, NodeId parent) void PatternDeclaration::visit (AST::RangePattern &pattern) { - resolve_range_pattern_bound (pattern.get_upper_bound ().get (), parent); - resolve_range_pattern_bound (pattern.get_lower_bound ().get (), parent); + resolve_range_pattern_bound (pattern.get_upper_bound ().get ()); + resolve_range_pattern_bound (pattern.get_lower_bound ().get ()); } } // namespace Resolver diff --git a/gcc/rust/resolve/rust-ast-resolve-pattern.h b/gcc/rust/resolve/rust-ast-resolve-pattern.h index 35d95be630d..038c8468a54 100644 --- a/gcc/rust/resolve/rust-ast-resolve-pattern.h +++ b/gcc/rust/resolve/rust-ast-resolve-pattern.h @@ -30,9 +30,9 @@ class ResolvePattern : public ResolverBase using Rust::Resolver::ResolverBase::visit; public: - static void go (AST::Pattern *pattern, NodeId parent) + static void go (AST::Pattern *pattern) { - ResolvePattern resolver (parent); + ResolvePattern resolver; pattern->accept_vis (resolver); } @@ -47,7 +47,7 @@ public: } private: - ResolvePattern (NodeId parent) : ResolverBase (parent) {} + ResolvePattern () : ResolverBase () {} }; class PatternDeclaration : public ResolverBase @@ -55,9 +55,9 @@ class PatternDeclaration : public ResolverBase using Rust::Resolver::ResolverBase::visit; public: - static void go (AST::Pattern *pattern, NodeId parent) + static void go (AST::Pattern *pattern) { - PatternDeclaration resolver (parent); + PatternDeclaration resolver; pattern->accept_vis (resolver); }; @@ -94,7 +94,7 @@ public: void visit (AST::RangePattern &pattern) override; private: - PatternDeclaration (NodeId parent) : ResolverBase (parent) {} + PatternDeclaration () : ResolverBase () {} }; } // namespace Resolver diff --git a/gcc/rust/resolve/rust-ast-resolve-stmt.h b/gcc/rust/resolve/rust-ast-resolve-stmt.h index 3556b68fd02..9fdb090dd25 100644 --- a/gcc/rust/resolve/rust-ast-resolve-stmt.h +++ b/gcc/rust/resolve/rust-ast-resolve-stmt.h @@ -33,27 +33,25 @@ class ResolveStmt : public ResolverBase using Rust::Resolver::ResolverBase::visit; public: - static void go (AST::Stmt *stmt, NodeId parent, const CanonicalPath &prefix, + static void go (AST::Stmt *stmt, const CanonicalPath &prefix, const CanonicalPath &canonical_prefix, const CanonicalPath &enum_prefix) { if (stmt->is_marked_for_strip ()) return; - ResolveStmt resolver (parent, prefix, canonical_prefix, enum_prefix); + ResolveStmt resolver (prefix, canonical_prefix, enum_prefix); stmt->accept_vis (resolver); - }; + } void visit (AST::ExprStmtWithBlock &stmt) override { - ResolveExpr::go (stmt.get_expr ().get (), stmt.get_node_id (), prefix, - canonical_prefix); + ResolveExpr::go (stmt.get_expr ().get (), prefix, canonical_prefix); } void visit (AST::ExprStmtWithoutBlock &stmt) override { - ResolveExpr::go (stmt.get_expr ().get (), stmt.get_node_id (), prefix, - canonical_prefix); + ResolveExpr::go (stmt.get_expr ().get (), prefix, canonical_prefix); } void visit (AST::ConstantItem &constant) override @@ -73,8 +71,7 @@ public: }); ResolveType::go (constant.get_type ().get (), constant.get_node_id ()); - ResolveExpr::go (constant.get_expr ().get (), constant.get_node_id (), - prefix, canonical_prefix); + ResolveExpr::go (constant.get_expr ().get (), prefix, canonical_prefix); // the mutability checker needs to verify for immutable decls the number // of assignments are <1. This marks an implicit assignment @@ -87,15 +84,15 @@ public: { if (stmt.has_init_expr ()) { - ResolveExpr::go (stmt.get_init_expr ().get (), stmt.get_node_id (), - prefix, canonical_prefix); + ResolveExpr::go (stmt.get_init_expr ().get (), prefix, + canonical_prefix); // mark the assignment resolver->mark_assignment_to_decl ( stmt.get_pattern ()->get_pattern_node_id (), stmt.get_node_id ()); } - PatternDeclaration::go (stmt.get_pattern ().get (), stmt.get_node_id ()); + PatternDeclaration::go (stmt.get_pattern ().get ()); if (stmt.has_type ()) ResolveType::go (stmt.get_type ().get (), stmt.get_node_id ()); } @@ -124,8 +121,7 @@ public: { for (auto &generic : struct_decl.get_generic_params ()) { - ResolveGenericParam::go (generic.get (), - struct_decl.get_node_id ()); + ResolveGenericParam::go (generic.get ()); } } @@ -160,12 +156,12 @@ public: { for (auto &generic : enum_decl.get_generic_params ()) { - ResolveGenericParam::go (generic.get (), enum_decl.get_node_id ()); + ResolveGenericParam::go (generic.get ()); } } for (auto &variant : enum_decl.get_variants ()) - ResolveStmt::go (variant.get (), parent, path, canonical_prefix, path); + ResolveStmt::go (variant.get (), path, canonical_prefix, path); resolver->get_type_scope ().pop (); } @@ -286,8 +282,7 @@ public: { for (auto &generic : struct_decl.get_generic_params ()) { - ResolveGenericParam::go (generic.get (), - struct_decl.get_node_id ()); + ResolveGenericParam::go (generic.get ()); } } @@ -327,7 +322,7 @@ public: { for (auto &generic : union_decl.get_generic_params ()) { - ResolveGenericParam::go (generic.get (), union_decl.get_node_id ()); + ResolveGenericParam::go (generic.get ()); } } @@ -370,7 +365,7 @@ public: if (function.has_generics ()) { for (auto &generic : function.get_generic_params ()) - ResolveGenericParam::go (generic.get (), function.get_node_id ()); + ResolveGenericParam::go (generic.get ()); } if (function.has_return_type ()) @@ -382,8 +377,7 @@ public: for (auto ¶m : function.get_function_params ()) { ResolveType::go (param.get_type ().get (), param.get_node_id ()); - PatternDeclaration::go (param.get_pattern ().get (), - param.get_node_id ()); + PatternDeclaration::go (param.get_pattern ().get ()); // the mutability checker needs to verify for immutable decls the number // of assignments are <1. This marks an implicit assignment @@ -392,8 +386,7 @@ public: } // resolve the function body - ResolveExpr::go (function.get_definition ().get (), function.get_node_id (), - path, cpath); + ResolveExpr::go (function.get_definition ().get (), path, cpath); resolver->get_name_scope ().pop (); resolver->get_type_scope ().pop (); @@ -403,11 +396,11 @@ public: void visit (AST::ExternBlock &extern_block) override; private: - ResolveStmt (NodeId parent, const CanonicalPath &prefix, + ResolveStmt (const CanonicalPath &prefix, const CanonicalPath &canonical_prefix, const CanonicalPath &enum_prefix) - : ResolverBase (parent), prefix (prefix), - canonical_prefix (canonical_prefix), enum_prefix (enum_prefix) + : ResolverBase (), prefix (prefix), canonical_prefix (canonical_prefix), + enum_prefix (enum_prefix) {} const CanonicalPath &prefix; diff --git a/gcc/rust/resolve/rust-ast-resolve-struct-expr-field.cc b/gcc/rust/resolve/rust-ast-resolve-struct-expr-field.cc new file mode 100644 index 00000000000..4d8b6c788f3 --- /dev/null +++ b/gcc/rust/resolve/rust-ast-resolve-struct-expr-field.cc @@ -0,0 +1,61 @@ +// Copyright (C) 2020-2022 Free Software Foundation, Inc. + +// This file is part of GCC. + +// GCC is free software; you can redistribute it and/or modify it under +// the terms of the GNU General Public License as published by the Free +// Software Foundation; either version 3, or (at your option) any later +// version. + +// GCC is distributed in the hope that it will be useful, but WITHOUT ANY +// WARRANTY; without even the implied warranty of MERCHANTABILITY or +// FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +// for more details. + +// You should have received a copy of the GNU General Public License +// along with GCC; see the file COPYING3. If not see +// . + +#include "rust-ast-resolve-struct-expr-field.h" +#include "rust-ast-resolve-expr.h" + +namespace Rust { +namespace Resolver { + +void +ResolveStructExprField::go (AST::StructExprField *field, + const CanonicalPath &prefix, + const CanonicalPath &canonical_prefix) +{ + ResolveStructExprField resolver (prefix, canonical_prefix); + field->accept_vis (resolver); +} + +ResolveStructExprField::ResolveStructExprField ( + const CanonicalPath &prefix, const CanonicalPath &canonical_prefix) + : ResolverBase (), prefix (prefix), canonical_prefix (canonical_prefix) +{} + +void +ResolveStructExprField::visit (AST::StructExprFieldIdentifierValue &field) +{ + ResolveExpr::go (field.get_value ().get (), prefix, canonical_prefix); +} + +void +ResolveStructExprField::visit (AST::StructExprFieldIndexValue &field) +{ + ResolveExpr::go (field.get_value ().get (), prefix, canonical_prefix); +} + +void +ResolveStructExprField::visit (AST::StructExprFieldIdentifier &field) +{ + AST::IdentifierExpr expr (field.get_field_name (), {}, field.get_locus ()); + expr.set_node_id (field.get_node_id ()); + + ResolveExpr::go (&expr, prefix, canonical_prefix); +} + +} // namespace Resolver +} // namespace Rust diff --git a/gcc/rust/resolve/rust-ast-resolve-struct-expr-field.h b/gcc/rust/resolve/rust-ast-resolve-struct-expr-field.h index b2c30a95dbc..ce60b136e4b 100644 --- a/gcc/rust/resolve/rust-ast-resolve-struct-expr-field.h +++ b/gcc/rust/resolve/rust-ast-resolve-struct-expr-field.h @@ -32,15 +32,8 @@ class ResolveStructExprField : public ResolverBase using Rust::Resolver::ResolverBase::visit; public: - static void go (AST::StructExprField *field, NodeId parent, - const CanonicalPath &prefix, - const CanonicalPath &canonical_prefix) - { - ResolveStructExprField resolver (parent, prefix, canonical_prefix); - field->accept_vis (resolver); - } - - virtual ~ResolveStructExprField () override {} + static void go (AST::StructExprField *field, const CanonicalPath &prefix, + const CanonicalPath &canonical_prefix); void visit (AST::StructExprFieldIdentifierValue &field) override; @@ -49,11 +42,8 @@ public: void visit (AST::StructExprFieldIdentifier &field) override; private: - ResolveStructExprField (NodeId parent, const CanonicalPath &prefix, - const CanonicalPath &canonical_prefix) - : ResolverBase (parent), prefix (prefix), - canonical_prefix (canonical_prefix) - {} + ResolveStructExprField (const CanonicalPath &prefix, + const CanonicalPath &canonical_prefix); const CanonicalPath &prefix; const CanonicalPath &canonical_prefix; diff --git a/gcc/rust/resolve/rust-ast-resolve-toplevel.h b/gcc/rust/resolve/rust-ast-resolve-toplevel.h index 78b786a3072..e0928f5de07 100644 --- a/gcc/rust/resolve/rust-ast-resolve-toplevel.h +++ b/gcc/rust/resolve/rust-ast-resolve-toplevel.h @@ -45,7 +45,7 @@ public: NodeId current_module = resolver.resolver->peek_current_module_scope (); resolver.mappings->insert_child_item_to_parent_module_mapping ( item->get_node_id (), current_module); - }; + } void visit (AST::Module &module) override { @@ -408,8 +408,7 @@ public: private: ResolveTopLevel (const CanonicalPath &prefix, const CanonicalPath &canonical_prefix) - : ResolverBase (UNKNOWN_NODEID), prefix (prefix), - canonical_prefix (canonical_prefix) + : ResolverBase (), prefix (prefix), canonical_prefix (canonical_prefix) {} const CanonicalPath &prefix; diff --git a/gcc/rust/resolve/rust-ast-resolve-type.cc b/gcc/rust/resolve/rust-ast-resolve-type.cc index ce9c0d19e14..7f6e43a725b 100644 --- a/gcc/rust/resolve/rust-ast-resolve-type.cc +++ b/gcc/rust/resolve/rust-ast-resolve-type.cc @@ -122,11 +122,7 @@ void ResolveType::visit (AST::ArrayType &type) { type.get_elem_type ()->accept_vis (*this); - // FIXME - // the capacity expr can contain block-expr with functions but these should be - // folded via constexpr code - ResolveExpr::go (type.get_size_expr ().get (), type.get_node_id (), - CanonicalPath::create_empty (), + ResolveExpr::go (type.get_size_expr ().get (), CanonicalPath::create_empty (), CanonicalPath::create_empty ()); } @@ -207,9 +203,8 @@ void ResolveType::visit (AST::ReferenceType &type) { CanonicalPath path = CanonicalPath::create_empty (); - resolved_node - = ResolveType::go (type.get_type_referenced ().get (), type.get_node_id (), - canonicalize_type_with_generics, &path); + resolved_node = ResolveType::go (type.get_type_referenced ().get (), + canonicalize_type_with_generics, &path); if (canonical_path != nullptr) { std::string ref_type_str = type.is_mut () ? "mut" : ""; @@ -223,9 +218,8 @@ void ResolveType::visit (AST::RawPointerType &type) { CanonicalPath path = CanonicalPath::create_empty (); - resolved_node - = ResolveType::go (type.get_type_pointed_to ().get (), type.get_node_id (), - canonicalize_type_with_generics, &path); + resolved_node = ResolveType::go (type.get_type_pointed_to ().get (), + canonicalize_type_with_generics, &path); if (canonical_path != nullptr) { std::string ptr_type_str @@ -249,9 +243,8 @@ void ResolveType::visit (AST::SliceType &type) { CanonicalPath path = CanonicalPath::create_empty (); - resolved_node - = ResolveType::go (type.get_elem_type ().get (), type.get_node_id (), - canonicalize_type_with_generics, &path); + resolved_node = ResolveType::go (type.get_elem_type ().get (), + canonicalize_type_with_generics, &path); if (canonical_path != nullptr) { std::string slice_path = "[" + path.get () + "]"; @@ -460,5 +453,6 @@ ResolveRelativeTypePath::go (AST::QualifiedPathInType &path) return true; } + } // namespace Resolver } // namespace Rust diff --git a/gcc/rust/resolve/rust-ast-resolve-type.h b/gcc/rust/resolve/rust-ast-resolve-type.h index 46f15401e95..aab6a1afd7d 100644 --- a/gcc/rust/resolve/rust-ast-resolve-type.h +++ b/gcc/rust/resolve/rust-ast-resolve-type.h @@ -139,7 +139,7 @@ public: protected: ResolveTypeToCanonicalPath (bool include_generic_args, bool type_resolve_generic_args) - : ResolverBase (UNKNOWN_NODEID), result (CanonicalPath::create_empty ()), + : ResolverBase (), result (CanonicalPath::create_empty ()), include_generic_args_flag (include_generic_args), type_resolve_generic_args_flag (type_resolve_generic_args), failure_flag (false) @@ -204,15 +204,14 @@ class ResolveType : public ResolverBase using Rust::Resolver::ResolverBase::visit; public: - static NodeId go (AST::Type *type, NodeId parent, + static NodeId go (AST::Type *type, bool canonicalize_type_with_generics = false, CanonicalPath *canonical_path = nullptr) { - ResolveType resolver (parent, canonicalize_type_with_generics, - canonical_path); + ResolveType resolver (canonicalize_type_with_generics, canonical_path); type->accept_vis (resolver); return resolver.resolved_node; - }; + } void visit (AST::BareFunctionType &fntype) override { @@ -273,9 +272,9 @@ public: void visit (AST::SliceType &type) override; private: - ResolveType (NodeId parent, bool canonicalize_type_with_generics, + ResolveType (bool canonicalize_type_with_generics, CanonicalPath *canonical_path) - : ResolverBase (parent), + : ResolverBase (), canonicalize_type_with_generics (canonicalize_type_with_generics), canonical_path (canonical_path) {} @@ -289,35 +288,27 @@ class ResolveTypeBound : public ResolverBase using Rust::Resolver::ResolverBase::visit; public: - static NodeId go (AST::TypeParamBound *type, NodeId parent, + static NodeId go (AST::TypeParamBound *type, bool canonicalize_type_with_generics = false) { - ResolveTypeBound resolver (parent, canonicalize_type_with_generics); + ResolveTypeBound resolver (canonicalize_type_with_generics); type->accept_vis (resolver); - if (!resolver.ok) - rust_error_at (type->get_locus (), "unresolved type bound"); - return resolver.resolved_node; }; void visit (AST::TraitBound &bound) override { - resolved_node = ResolveType::go (&bound.get_type_path (), parent, + resolved_node = ResolveType::go (&bound.get_type_path (), canonicalize_type_with_generics); - ok = resolved_node != UNKNOWN_NODEID; } - void visit (AST::Lifetime &) override { ok = true; } - private: - ResolveTypeBound (NodeId parent, bool canonicalize_type_with_generics) - : ResolverBase (parent), - canonicalize_type_with_generics (canonicalize_type_with_generics), - ok (false) + ResolveTypeBound (bool canonicalize_type_with_generics) + : ResolverBase (), + canonicalize_type_with_generics (canonicalize_type_with_generics) {} bool canonicalize_type_with_generics; - bool ok; }; class ResolveGenericParam : public ResolverBase @@ -325,33 +316,21 @@ class ResolveGenericParam : public ResolverBase using Rust::Resolver::ResolverBase::visit; public: - static NodeId go (AST::GenericParam *param, NodeId parent) + static NodeId go (AST::GenericParam *param) { - ResolveGenericParam resolver (parent); + ResolveGenericParam resolver; param->accept_vis (resolver); - if (!resolver.ok) - rust_error_at (param->get_locus (), "unresolved generic parameter"); - return resolver.resolved_node; - }; - - void visit (AST::LifetimeParam &) override - { - // For now do not do anything and accept everything. - ok = true; } void visit (AST::ConstGenericParam &) override { // For now do not do anything and accept everything. // FIXME: This needs to change soon! - ok = true; } void visit (AST::TypeParam ¶m) override { - ok = true; - // if it has a type lets resolve it if (param.has_type ()) ResolveType::go (param.get_type ().get (), param.get_node_id ()); @@ -379,9 +358,7 @@ public: } private: - ResolveGenericParam (NodeId parent) : ResolverBase (parent), ok (false) {} - - bool ok; + ResolveGenericParam () : ResolverBase () {} }; class ResolveWhereClause : public ResolverBase @@ -391,16 +368,11 @@ class ResolveWhereClause : public ResolverBase public: static void Resolve (AST::WhereClause &where_clause) { - ResolveWhereClause r (where_clause.get_node_id ()); + ResolveWhereClause r; for (auto &clause : where_clause.get_items ()) clause->accept_vis (r); } - void visit (AST::LifetimeWhereClauseItem &) override - { - // nothing to do - } - void visit (AST::TypeBoundWhereClauseItem &item) override { ResolveType::go (item.get_type ().get (), item.get_node_id ()); @@ -414,7 +386,7 @@ public: } private: - ResolveWhereClause (NodeId parent) : ResolverBase (parent) {} + ResolveWhereClause () : ResolverBase () {} }; } // namespace Resolver diff --git a/gcc/rust/resolve/rust-ast-resolve.cc b/gcc/rust/resolve/rust-ast-resolve.cc index 169237a598e..3a3dedad214 100644 --- a/gcc/rust/resolve/rust-ast-resolve.cc +++ b/gcc/rust/resolve/rust-ast-resolve.cc @@ -111,31 +111,6 @@ NameResolution::go (AST::Crate &crate) resolver->pop_module_scope (); } -// rust-ast-resolve-struct-expr-field.h - -void -ResolveStructExprField::visit (AST::StructExprFieldIdentifierValue &field) -{ - ResolveExpr::go (field.get_value ().get (), field.get_node_id (), prefix, - canonical_prefix); -} - -void -ResolveStructExprField::visit (AST::StructExprFieldIndexValue &field) -{ - ResolveExpr::go (field.get_value ().get (), field.get_node_id (), prefix, - canonical_prefix); -} - -void -ResolveStructExprField::visit (AST::StructExprFieldIdentifier &field) -{ - AST::IdentifierExpr expr (field.get_field_name (), {}, field.get_locus ()); - expr.set_node_id (field.get_node_id ()); - - ResolveExpr::go (&expr, field.get_node_id (), prefix, canonical_prefix); -} - // rust-ast-resolve-item.h void diff --git a/gcc/rust/resolve/rust-ast-verify-assignee.h b/gcc/rust/resolve/rust-ast-verify-assignee.h index 447f3e71899..9c1c1a18c6a 100644 --- a/gcc/rust/resolve/rust-ast-verify-assignee.h +++ b/gcc/rust/resolve/rust-ast-verify-assignee.h @@ -64,7 +64,7 @@ public: ok = true; // mark the assignment to the name - resolver->mark_assignment_to_decl (resolved_node, parent); + // resolver->mark_assignment_to_decl (resolved_node, parent); } void visit (AST::DereferenceExpr &expr) override @@ -75,7 +75,7 @@ public: void visit (AST::PathInExpression &expr) override { ok = true; } private: - VerifyAsignee (NodeId parent) : ResolverBase (parent), ok (false) {} + VerifyAsignee (NodeId parent) : ResolverBase (), ok (false) {} bool ok; };