]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
gccrs: Add new function ClosureExpr::get_definition_expr
authorOwen Avery <powerboat9.gamer@gmail.com>
Mon, 9 Jun 2025 21:11:39 +0000 (17:11 -0400)
committerArthur Cohen <arthur.cohen@embecosm.com>
Tue, 5 Aug 2025 14:36:45 +0000 (16:36 +0200)
gcc/rust/ChangeLog:

* ast/rust-expr.h (ClosureExpr::get_definition_expr): New
virtual member function.
(ClosureExprInner::get_definition_expr): Add override specifier.
(ClosureExprInnerTyped::get_definition_block): Rename to...
(ClosureExprInnerTyped::get_definition_expr): ...here and add
override specifier.

* ast/rust-ast-collector.cc (TokenCollector::visit): Handle
rename of ClosureExprInnerTyped::get_definition_block to
ClosureExprInnerTyped::get_definition_expr.
* ast/rust-ast-visitor.cc (DefaultASTVisitor::visit): Likewise.
* expand/rust-cfg-strip.cc (CfgStrip::visit): Likewise.
* expand/rust-expand-visitor.cc (ExpandVisitor::visit):
Likewise.
* hir/rust-ast-lower-expr.cc (ASTLoweringExpr::visit): Likewise.
* resolve/rust-ast-resolve-expr.cc (ResolveExpr::visit):
Likewise.
* resolve/rust-late-name-resolver-2.0.cc (Late::visit):
Likewise.

Signed-off-by: Owen Avery <powerboat9.gamer@gmail.com>
gcc/rust/ast/rust-ast-collector.cc
gcc/rust/ast/rust-ast-visitor.cc
gcc/rust/ast/rust-expr.h
gcc/rust/expand/rust-cfg-strip.cc
gcc/rust/expand/rust-expand-visitor.cc
gcc/rust/hir/rust-ast-lower-expr.cc
gcc/rust/resolve/rust-ast-resolve-expr.cc
gcc/rust/resolve/rust-late-name-resolver-2.0.cc

index c6ec0e7bb9be942b63f5da1c7cc640f4dd31122a..94a0240b510b2ffc25d387f8205a2c2f6ef46ad9 100644 (file)
@@ -1291,7 +1291,7 @@ TokenCollector::visit (ClosureExprInnerTyped &expr)
   visit_closure_common (expr);
   push (Rust::Token::make (RETURN_TYPE, expr.get_locus ()));
   visit (expr.get_return_type ());
-  visit (expr.get_definition_block ());
+  visit (expr.get_definition_expr ());
 }
 
 void
index bd1b65aaec91b343f452be88387030b5fca5c417..ab6a022ccee183326d243894dd17cb56bc8dbf9a 100644 (file)
@@ -474,7 +474,7 @@ DefaultASTVisitor::visit (AST::ClosureExprInnerTyped &expr)
   for (auto &param : expr.get_params ())
     visit (param);
   visit (expr.get_return_type ());
-  visit (expr.get_definition_block ());
+  visit (expr.get_definition_expr ());
 }
 
 void
index ba20bfaa6014c4909eaaae88d26ffb68c6a59ec0..8f44d5878bbf2841f6244e4c665d59b65c58ebf1 100644 (file)
@@ -2506,6 +2506,8 @@ public:
   bool get_has_move () const { return has_move; }
 
   Expr::Kind get_expr_kind () const override { return Expr::Kind::Closure; }
+
+  virtual Expr &get_definition_expr () = 0;
 };
 
 // Represents a non-type-specified closure expression AST node
@@ -2565,7 +2567,7 @@ public:
     return closure_inner == nullptr;
   }
 
-  Expr &get_definition_expr ()
+  Expr &get_definition_expr () override
   {
     rust_assert (closure_inner != nullptr);
     return *closure_inner;
@@ -2932,7 +2934,7 @@ public:
   bool is_marked_for_strip () const override { return expr == nullptr; }
 
   // TODO: is this better? Or is a "vis_block" better?
-  BlockExpr &get_definition_block ()
+  BlockExpr &get_definition_expr () override
   {
     rust_assert (expr != nullptr);
     return *expr;
index f761f9916c9a268619b4d756c7355f244b903f73..916a695ad2672848fbdffd6ba8eac57682b4d676 100644 (file)
@@ -1192,7 +1192,7 @@ CfgStrip::visit (AST::ClosureExprInnerTyped &expr)
     rust_error_at (type.get_locus (), "cannot strip type in this position");
 
   // can't strip expression itself, but can strip sub-expressions
-  auto &definition_block = expr.get_definition_block ();
+  auto &definition_block = expr.get_definition_expr ();
   definition_block.accept_vis (*this);
   if (definition_block.is_marked_for_strip ())
     rust_error_at (definition_block.get_locus (),
index 42df5e1ee11891db93c25055234e3c0a8b92b158..ba7bac12ddf4da6411817238d134f95b8198e164 100644 (file)
@@ -641,7 +641,7 @@ ExpandVisitor::visit (AST::ClosureExprInnerTyped &expr)
 
   maybe_expand_type (expr.get_return_type_ptr ());
 
-  visit (expr.get_definition_block ());
+  visit (expr.get_definition_expr ());
 }
 
 void
index 16e80a0841aae911ceb0f263bd161fe88417df1c..3f3d6007e461fedb3f69b8dd99d0ddb3f018922a 100644 (file)
@@ -836,7 +836,7 @@ ASTLoweringExpr::visit (AST::ClosureExprInnerTyped &expr)
 {
   HIR::Type *closure_return_type = nullptr;
   HIR::Expr *closure_expr
-    = ASTLoweringExpr::translate (expr.get_definition_block ());
+    = ASTLoweringExpr::translate (expr.get_definition_expr ());
 
   std::vector<HIR::ClosureParam> closure_params;
   for (auto &param : expr.get_params ())
index ff5571bb34bb79de3c5066fc76cf781a30cce666..a41019371cb3e6b47768e92719ff0b7f189e6593 100644 (file)
@@ -786,7 +786,7 @@ ResolveExpr::visit (AST::ClosureExprInnerTyped &expr)
 
   resolver->push_closure_context (expr.get_node_id ());
 
-  ResolveExpr::go (expr.get_definition_block (), prefix, canonical_prefix);
+  ResolveExpr::go (expr.get_definition_expr (), prefix, canonical_prefix);
 
   resolver->pop_closure_context ();
 
index 1c0850c66f426c68b16811c725786b48128fc800..0d7f25e0449b339f29f6de11312dbd93029a4c6d 100644 (file)
@@ -730,7 +730,7 @@ Late::visit (AST::ClosureExprInnerTyped &closure)
   ctx.bindings.exit ();
 
   visit (closure.get_return_type ());
-  visit (closure.get_definition_block ());
+  visit (closure.get_definition_expr ());
 }
 
 } // namespace Resolver2_0