]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
gccrs: ast: builder: Allow building struct ident patterns
authorArthur Cohen <arthur.cohen@embecosm.com>
Wed, 16 Apr 2025 15:37:31 +0000 (17:37 +0200)
committerArthur Cohen <arthur.cohen@embecosm.com>
Tue, 5 Aug 2025 14:36:40 +0000 (16:36 +0200)
gcc/rust/ChangeLog:

* ast/rust-ast-builder.cc (Builder::struct_pattern_ident_pattern): New.
* ast/rust-ast-builder.h: New declaration.

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

index 08c52b155c444a612b721bedfb42e047c3f1d35c..ef0f92f14ce0857b7113a3419e10bfd60b108764 100644 (file)
@@ -442,6 +442,14 @@ Builder::field_access (std::unique_ptr<Expr> &&instance,
     new FieldAccessExpr (std::move (instance), field, {}, loc));
 }
 
+std::unique_ptr<StructPatternField>
+Builder::struct_pattern_ident_pattern (std::string field_name,
+                                      std::unique_ptr<Pattern> &&pattern)
+{
+  return std::make_unique<StructPatternFieldIdentPat> (
+    field_name, std::move (pattern), std::vector<Attribute> (), loc);
+}
+
 std::unique_ptr<Pattern>
 Builder::wildcard () const
 {
index 41ce118e77147c67ffc4843e136e5050d9f842d9..a5115b685acead5ffd09dc1bab43abdc3ba3107e 100644 (file)
@@ -254,6 +254,10 @@ public:
   std::unique_ptr<Expr> field_access (std::unique_ptr<Expr> &&instance,
                                      std::string field) const;
 
+  std::unique_ptr<StructPatternField>
+  struct_pattern_ident_pattern (std::string field_name,
+                               std::unique_ptr<Pattern> &&pattern);
+
   /* Create a wildcard pattern (`_`) */
   std::unique_ptr<Pattern> wildcard () const;
   /* Create a reference pattern (`&pattern`) */