From 98847e4d5b77208a45869a93c56fec647e9f3bd2 Mon Sep 17 00:00:00 2001 From: Dawer <7803845+iDawer@users.noreply.github.com> Date: Wed, 18 Aug 2021 18:08:14 +0500 Subject: [PATCH] internal: use the new `edit_in_place::Indent` API --- .../src/handlers/convert_iter_for_each_to_for.rs | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/crates/ide_assists/src/handlers/convert_iter_for_each_to_for.rs b/crates/ide_assists/src/handlers/convert_iter_for_each_to_for.rs index a7344572bae..5150cc9a6f1 100644 --- a/crates/ide_assists/src/handlers/convert_iter_for_each_to_for.rs +++ b/crates/ide_assists/src/handlers/convert_iter_for_each_to_for.rs @@ -1,6 +1,6 @@ use ide_db::helpers::FamousDefs; use syntax::{ - ast::{self, edit::AstNodeEdit, make, ArgListOwner}, + ast::{self, edit_in_place::Indent, make, ArgListOwner}, AstNode, }; @@ -46,24 +46,25 @@ pub(crate) fn convert_iter_for_each_to_for(acc: &mut Assists, ctx: &AssistContex let body = closure.body()?; let stmt = method.syntax().parent().and_then(ast::ExprStmt::cast); - let syntax = stmt.as_ref().map_or(method.syntax(), |stmt| stmt.syntax()); + let range = stmt.as_ref().map_or_else(|| method.syntax(), AstNode::syntax).text_range(); acc.add( AssistId("convert_iter_for_each_to_for", AssistKind::RefactorRewrite), "Replace this `Iterator::for_each` with a for loop", - syntax.text_range(), + range, |builder| { - let indent = stmt.as_ref().map_or(method.indent_level(), |stmt| stmt.indent_level()); + let indent = + stmt.as_ref().map_or_else(|| method.indent_level(), ast::ExprStmt::indent_level); let block = match body { ast::Expr::BlockExpr(block) => block, _ => make::block_expr(Vec::new(), Some(body)), } - .reset_indent() - .indent(indent); + .clone_for_update(); + block.reset_indent().indent(indent); let expr_for_loop = make::expr_for_loop(param, receiver, block); - builder.replace(syntax.text_range(), expr_for_loop.syntax().text()) + builder.replace(range, expr_for_loop.to_string()) }, ) }