]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
gccrs: Lower StructPatternFieldIdentPat
authorOwen Avery <powerboat9.gamer@gmail.com>
Thu, 27 Apr 2023 02:14:53 +0000 (22:14 -0400)
committerArthur Cohen <arthur.cohen@embecosm.com>
Tue, 16 Jan 2024 17:34:15 +0000 (18:34 +0100)
gcc/rust/ChangeLog:

* hir/rust-ast-lower-pattern.cc
(ASTLoweringPattern::visit): Lower StructPatternFieldIdentPat.

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

index 7717953dbd81d7a9b1f5b9cb568c92eb937a9763..63ea66333f9f818e029e9e10534fa208cc5a90be 100644 (file)
@@ -128,8 +128,23 @@ ASTLoweringPattern::visit (AST::StructPattern &pattern)
          break;
 
          case AST::StructPatternField::ItemType::IDENT_PAT: {
-           // TODO
-           gcc_unreachable ();
+           AST::StructPatternFieldIdentPat &ident
+             = static_cast<AST::StructPatternFieldIdentPat &> (*field);
+
+           auto crate_num = mappings->get_current_crate ();
+           Analysis::NodeMapping mapping (crate_num, ident.get_node_id (),
+                                          mappings->get_next_hir_id (
+                                            crate_num),
+                                          UNKNOWN_LOCAL_DEFID);
+
+           std::unique_ptr<HIR::Pattern> pat (ASTLoweringPattern::translate (
+             ident.get_ident_pattern ().get ()));
+
+           f = new HIR::StructPatternFieldIdentPat (mapping,
+                                                    ident.get_identifier (),
+                                                    std::move (pat),
+                                                    ident.get_outer_attrs (),
+                                                    ident.get_locus ());
          }
          break;