aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_hir/src/expr.rs
diff options
context:
space:
mode:
Diffstat (limited to 'crates/ra_hir/src/expr.rs')
-rw-r--r--crates/ra_hir/src/expr.rs14
1 files changed, 7 insertions, 7 deletions
diff --git a/crates/ra_hir/src/expr.rs b/crates/ra_hir/src/expr.rs
index bf423d3d8..b30e11abb 100644
--- a/crates/ra_hir/src/expr.rs
+++ b/crates/ra_hir/src/expr.rs
@@ -831,18 +831,18 @@ impl ExprCollector {
831 p.field_pat_list().expect("every struct should have a field list"); 831 p.field_pat_list().expect("every struct should have a field list");
832 let mut fields: Vec<_> = field_pat_list 832 let mut fields: Vec<_> = field_pat_list
833 .bind_pats() 833 .bind_pats()
834 .map(|bind_pat| { 834 .filter_map(|bind_pat| {
835 let ast_pat = ast::Pat::cast(bind_pat.syntax()).expect("bind pat is a pat"); 835 let ast_pat = ast::Pat::cast(bind_pat.syntax()).expect("bind pat is a pat");
836 let pat = self.collect_pat(ast_pat); 836 let pat = self.collect_pat(ast_pat);
837 let name = bind_pat.name().expect("bind pat has a name").as_name(); 837 let name = bind_pat.name()?.as_name();
838 FieldPat { name, pat } 838 Some(FieldPat { name, pat })
839 }) 839 })
840 .collect(); 840 .collect();
841 let iter = field_pat_list.field_pats().map(|f| { 841 let iter = field_pat_list.field_pats().filter_map(|f| {
842 let ast_pat = f.pat().expect("field pat always contains a pattern"); 842 let ast_pat = f.pat()?;
843 let pat = self.collect_pat(ast_pat); 843 let pat = self.collect_pat(ast_pat);
844 let name = f.name().expect("field pats always have a name").as_name(); 844 let name = f.name()?.as_name();
845 FieldPat { name, pat } 845 Some(FieldPat { name, pat })
846 }); 846 });
847 fields.extend(iter); 847 fields.extend(iter);
848 848