]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
ast: builder: Allow building struct ident patterns
authorArthur Cohen <arthur.cohen@embecosm.com>
Wed, 16 Apr 2025 15:37:31 +0000 (17:37 +0200)
committerCohenArthur <arthur.cohen@embecosm.com>
Fri, 2 May 2025 14:46:25 +0000 (14:46 +0000)
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 1f49c6411975c6f10b0eb088a56b7f9544e420d8..e4c03e5582af10eb5adccfe9f91bdacd2833cae6 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 c0550c4a5ad7f6b95cad9fe1518809ff11256556..682af79fc07ad1e4b4518b37f161147a7e36824c 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`) */