public inbox for gcc-cvs@sourceware.org
help / color / mirror / Atom feed
* [gcc/devel/rust/master] Remove unused parent NodeId mappings
@ 2022-06-29 10:27 Thomas Schwinge
  0 siblings, 0 replies; only message in thread
From: Thomas Schwinge @ 2022-06-29 10:27 UTC (permalink / raw)
  To: gcc-cvs

https://gcc.gnu.org/g:b9fffb15587d4e45796e1ac1b230119f38f10662

commit b9fffb15587d4e45796e1ac1b230119f38f10662
Author: Philip Herron <philip.herron@embecosm.com>
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 &param : in_params)
-    resolve_expr (param.get (), expr.get_node_id ());
+  ResolveExpr::go (expr.get_function_expr ().get (), prefix, canonical_prefix);
+  for (auto &param : 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 &param : 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 &param : 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 &param : 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 &param : 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 &param : 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<AST::TupleStructItems> &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<AST::RangePatternBoundPath *> (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<AST::RangePatternBoundQualPath *> (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 &param : 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
+// <http://www.gnu.org/licenses/>.
+
+#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 &param) 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;
 };


^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2022-06-29 10:27 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-06-29 10:27 [gcc/devel/rust/master] Remove unused parent NodeId mappings Thomas Schwinge

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).