]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
ast-builder: Add new methods for building structs
authorArthur Cohen <arthur.cohen@embecosm.com>
Fri, 3 Jan 2025 14:27:38 +0000 (14:27 +0000)
committerCohenArthur <arthur.cohen@embecosm.com>
Mon, 20 Jan 2025 12:09:26 +0000 (12:09 +0000)
gcc/rust/ChangeLog:

* ast/rust-ast-builder.cc: Add new methods for constructing struct exprs.
* ast/rust-ast-builder.h: Mention how to build tuple expressions.

gcc/rust/ast/rust-ast-builder.cc
gcc/rust/ast/rust-ast-builder.h

index 728d5c0a4eded98891363bdee05e2cce955db3d4..eccc474187f5fd1554b4029672aefbe908a5de5c 100644 (file)
@@ -24,6 +24,7 @@
 #include "rust-path.h"
 #include "rust-item.h"
 #include "rust-path.h"
+#include "rust-system.h"
 #include "rust-token.h"
 
 namespace Rust {
@@ -261,10 +262,17 @@ std::unique_ptr<Expr>
 Builder::struct_expr (
   std::string struct_name,
   std::vector<std::unique_ptr<StructExprField>> &&fields) const
+{
+  return struct_expr (path_in_expression ({struct_name}), std::move (fields));
+}
+
+std::unique_ptr<Expr>
+Builder::struct_expr (
+  PathInExpression struct_name,
+  std::vector<std::unique_ptr<StructExprField>> &&fields) const
 {
   return std::unique_ptr<Expr> (
-    new StructExprStructFields (path_in_expression ({struct_name}),
-                               std::move (fields), loc));
+    new StructExprStructFields (struct_name, std::move (fields), loc));
 }
 
 std::unique_ptr<StructExprField>
index 86279b0c5bb5fc428c196d8f558a725ae8ccac6f..7e224d3db5ff2f50f69d302ac3932924d2a60ba6 100644 (file)
@@ -160,10 +160,15 @@ public:
 
   /**
    * Create an expression for struct instantiation with fields (`S { a, b: c }`)
+   * Tuple expressions are call expressions and can thus be constructed with
+   * `call`
    */
   std::unique_ptr<Expr>
   struct_expr (std::string struct_name,
               std::vector<std::unique_ptr<StructExprField>> &&fields) const;
+  std::unique_ptr<Expr>
+  struct_expr (PathInExpression struct_name,
+              std::vector<std::unique_ptr<StructExprField>> &&fields) const;
 
   /* Create a field expression for struct instantiation (`field_name: value`) */
   std::unique_ptr<StructExprField>