Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/hir_def/src/body/lower.rs')
| -rw-r--r-- | crates/hir_def/src/body/lower.rs | 29 |
1 files changed, 15 insertions, 14 deletions
diff --git a/crates/hir_def/src/body/lower.rs b/crates/hir_def/src/body/lower.rs index 3136206761..48aa1b3464 100644 --- a/crates/hir_def/src/body/lower.rs +++ b/crates/hir_def/src/body/lower.rs @@ -130,11 +130,7 @@ impl ExprCollector<'_> { self.body.params.push(param_pat); } - for param in param_list.params() { - let pat = match param.pat() { - None => continue, - Some(pat) => pat, - }; + for pat in param_list.params().filter_map(|param| param.pat()) { let param_pat = self.collect_pat(pat); self.body.params.push(param_pat); } @@ -160,7 +156,7 @@ impl ExprCollector<'_> { self.make_expr(expr, Err(SyntheticSyntax)) } fn unit(&mut self) -> ExprId { - self.alloc_expr_desugared(Expr::Tuple { exprs: Vec::new() }) + self.alloc_expr_desugared(Expr::Tuple { exprs: Box::default() }) } fn missing_expr(&mut self) -> ExprId { self.alloc_expr_desugared(Expr::Missing) @@ -235,7 +231,8 @@ impl ExprCollector<'_> { expr: else_branch.unwrap_or_else(|| self.unit()), guard: None, }, - ]; + ] + .into(); return Some( self.alloc_expr(Expr::Match { expr: match_expr, arms }, syntax_ptr), ); @@ -300,7 +297,8 @@ impl ExprCollector<'_> { let arms = vec![ MatchArm { pat, expr: body, guard: None }, MatchArm { pat: placeholder_pat, expr: break_, guard: None }, - ]; + ] + .into(); let match_expr = self.alloc_expr_desugared(Expr::Match { expr: match_expr, arms }); return Some( @@ -324,7 +322,7 @@ impl ExprCollector<'_> { let args = if let Some(arg_list) = e.arg_list() { arg_list.args().filter_map(|e| self.maybe_collect_expr(e)).collect() } else { - Vec::new() + Box::default() }; self.alloc_expr(Expr::Call { callee, args }, syntax_ptr) } @@ -333,7 +331,7 @@ impl ExprCollector<'_> { let args = if let Some(arg_list) = e.arg_list() { arg_list.args().filter_map(|e| self.maybe_collect_expr(e)).collect() } else { - Vec::new() + Box::default() }; let method_name = e.name_ref().map(|nr| nr.as_name()).unwrap_or_else(Name::missing); let generic_args = e @@ -367,7 +365,7 @@ impl ExprCollector<'_> { }) .collect() } else { - Vec::new() + Box::default() }; self.alloc_expr(Expr::Match { expr, arms }, syntax_ptr) } @@ -429,7 +427,7 @@ impl ExprCollector<'_> { let spread = nfl.spread().map(|s| self.collect_expr(s)); Expr::RecordLit { path, fields, spread } } else { - Expr::RecordLit { path, fields: Vec::new(), spread: None } + Expr::RecordLit { path, fields: Box::default(), spread: None } }; self.alloc_expr(record_lit, syntax_ptr) @@ -496,7 +494,10 @@ impl ExprCollector<'_> { .and_then(|r| r.ty()) .map(|it| Interned::new(TypeRef::from_ast(&self.ctx(), it))); let body = self.collect_expr_opt(e.body()); - self.alloc_expr(Expr::Lambda { args, arg_types, ret_type, body }, syntax_ptr) + self.alloc_expr( + Expr::Lambda { args: args.into(), arg_types: arg_types.into(), ret_type, body }, + syntax_ptr, + ) } ast::Expr::BinExpr(e) => { let lhs = self.collect_expr_opt(e.lhs()); @@ -718,7 +719,7 @@ impl ExprCollector<'_> { self.statements_in_scope.pop(); } let tail = tail; - let statements = std::mem::replace(&mut self.statements_in_scope, prev_statements); + let statements = std::mem::replace(&mut self.statements_in_scope, prev_statements).into(); let syntax_node_ptr = AstPtr::new(&block.into()); let expr_id = self.alloc_expr( Expr::Block { id: block_id, statements, tail, label: None }, |