]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
gccrs: Lower AltPattern
authorOwen Avery <powerboat9.gamer@gmail.com>
Wed, 8 Mar 2023 05:43:11 +0000 (00:43 -0500)
committerArthur Cohen <arthur.cohen@embecosm.com>
Tue, 16 Jan 2024 17:21:14 +0000 (18:21 +0100)
gcc/rust/ChangeLog:

* hir/rust-ast-lower-pattern.cc
(ASTLoweringPattern::visit): Lower AltPattern.
* hir/rust-ast-lower-pattern.h:
(ASTLoweringPattern::visit): Add AltPattern visitor.

Signed-off-by: Owen Avery <powerboat9.gamer@gmail.com>
gcc/rust/hir/rust-ast-lower-pattern.cc
gcc/rust/hir/rust-ast-lower-pattern.h

index 0aef80c30fbb51849ddbdbf3cc16080cb658adac..2f2395d21a08b91f11324c131db83d079a8c2f9e 100644 (file)
@@ -297,5 +297,25 @@ ASTLoweringPattern::visit (AST::SlicePattern &pattern)
     = new HIR::SlicePattern (mapping, std::move (items), pattern.get_locus ());
 }
 
+void
+ASTLoweringPattern::visit (AST::AltPattern &pattern)
+{
+  auto crate_num = mappings->get_current_crate ();
+  Analysis::NodeMapping mapping (crate_num, pattern.get_node_id (),
+                                mappings->get_next_hir_id (crate_num),
+                                UNKNOWN_LOCAL_DEFID);
+
+  std::vector<std::unique_ptr<HIR::Pattern>> alts;
+
+  for (auto &alt : pattern.get_alts ())
+    {
+      alts.push_back (std::unique_ptr<HIR::Pattern> (
+       ASTLoweringPattern::translate (alt.get ())));
+    }
+
+  translated
+    = new HIR::AltPattern (mapping, std::move (alts), pattern.get_locus ());
+}
+
 } // namespace HIR
 } // namespace Rust
index 4da644cfffc24bdcf4f14bab78624f0964774b9f..2b16e7aeef8e21c97ead17a9e9014dc633296b13 100644 (file)
@@ -42,6 +42,7 @@ public:
   void visit (AST::GroupedPattern &pattern) override;
   void visit (AST::ReferencePattern &pattern) override;
   void visit (AST::SlicePattern &pattern) override;
+  void visit (AST::AltPattern &pattern) override;
 
 private:
   ASTLoweringPattern ();