From 5d35e5882c26d7cb3cebbb6670a15d9118e8153c Mon Sep 17 00:00:00 2001 From: Jeroen Vannevel Date: Sat, 22 Jan 2022 11:32:26 +0000 Subject: [PATCH] removed unwrapping from indent --- .../src/handlers/extract_function.rs | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/crates/ide_assists/src/handlers/extract_function.rs b/crates/ide_assists/src/handlers/extract_function.rs index 5452d09177..06195624ed 100644 --- a/crates/ide_assists/src/handlers/extract_function.rs +++ b/crates/ide_assists/src/handlers/extract_function.rs @@ -1506,14 +1506,16 @@ fn make_body( let body_indent = IndentLevel(1); let elements: Vec = elements .into_iter() - .map(|stmt| match stmt { - syntax::NodeOrToken::Node(n) => { - let ast_element = ast::Stmt::cast(n).unwrap(); - let indented = ast_element.dedent(old_indent).indent(body_indent); - let ast_node = indented.syntax().clone_subtree(); - syntax::NodeOrToken::try_from(ast_node).unwrap() - } - syntax::NodeOrToken::Token(t) => syntax::NodeOrToken::try_from(t).unwrap(), + .map(|node_or_token| match &node_or_token { + syntax::NodeOrToken::Node(node) => match ast::Stmt::cast(node.clone()) { + Some(stmt) => { + let indented = stmt.dedent(old_indent).indent(body_indent); + let ast_node = indented.syntax().clone_subtree(); + syntax::NodeOrToken::Node(ast_node) + } + None => node_or_token, + }, + _ => node_or_token, }) .collect::>(); let tail_expr = tail_expr.map(|expr| expr.dedent(old_indent).indent(body_indent));