Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/ide-assists/src/handlers/convert_closure_to_fn.rs')
-rw-r--r--crates/ide-assists/src/handlers/convert_closure_to_fn.rs28
1 files changed, 12 insertions, 16 deletions
diff --git a/crates/ide-assists/src/handlers/convert_closure_to_fn.rs b/crates/ide-assists/src/handlers/convert_closure_to_fn.rs
index d34cf895cd..1d3a2db335 100644
--- a/crates/ide-assists/src/handlers/convert_closure_to_fn.rs
+++ b/crates/ide-assists/src/handlers/convert_closure_to_fn.rs
@@ -1,23 +1,20 @@
use either::Either;
use hir::{CaptureKind, ClosureCapture, FileRangeWrapper, HirDisplay};
use ide_db::{
- assists::{AssistId, AssistKind},
- base_db::SourceDatabase,
- defs::Definition,
- search::FileReferenceNode,
- source_change::SourceChangeBuilder,
- FxHashSet,
+ FxHashSet, assists::AssistId, base_db::SourceDatabase, defs::Definition,
+ search::FileReferenceNode, source_change::SourceChangeBuilder,
};
use stdx::format_to;
use syntax::{
+ AstNode, Direction, SyntaxKind, SyntaxNode, T, TextSize, ToSmolStr,
algo::{skip_trivia_token, skip_whitespace_token},
ast::{
- self,
+ self, HasArgList, HasGenericParams, HasName,
edit::{AstNodeEdit, IndentLevel},
- make, HasArgList, HasGenericParams, HasName,
+ make,
},
hacks::parse_expr_from_str,
- ted, AstNode, Direction, SyntaxKind, SyntaxNode, TextSize, ToSmolStr, T,
+ ted,
};
use crate::assist_context::{AssistContext, Assists};
@@ -146,7 +143,7 @@ pub(crate) fn convert_closure_to_fn(acc: &mut Assists, ctx: &AssistContext<'_>)
};
acc.add(
- AssistId("convert_closure_to_fn", AssistKind::RefactorRewrite),
+ AssistId::refactor_rewrite("convert_closure_to_fn"),
"Convert closure to fn",
closure.param_list()?.syntax().text_range(),
|builder| {
@@ -252,7 +249,7 @@ pub(crate) fn convert_closure_to_fn(acc: &mut Assists, ctx: &AssistContext<'_>)
);
fn_ = fn_.dedent(IndentLevel::from_token(&fn_.syntax().last_token().unwrap()));
- builder.edit_file(ctx.file_id());
+ builder.edit_file(ctx.vfs_file_id());
match &closure_name {
Some((closure_decl, _, _)) => {
fn_ = fn_.indent(closure_decl.indent_level());
@@ -509,9 +506,8 @@ fn wrap_capture_in_deref_if_needed(
}
fn capture_as_arg(ctx: &AssistContext<'_>, capture: &ClosureCapture) -> ast::Expr {
- let place =
- parse_expr_from_str(&capture.display_place_source_code(ctx.db()), ctx.file_id().edition())
- .expect("`display_place_source_code()` produced an invalid expr");
+ let place = parse_expr_from_str(&capture.display_place_source_code(ctx.db()), ctx.edition())
+ .expect("`display_place_source_code()` produced an invalid expr");
let needs_mut = match capture.kind() {
CaptureKind::SharedRef => false,
CaptureKind::MutableRef | CaptureKind::UniqueSharedRef => true,
@@ -590,7 +586,7 @@ fn handle_call(
let indent =
if insert_newlines { first_arg_indent.unwrap().to_string() } else { String::new() };
// FIXME: This text manipulation seems risky.
- let text = ctx.db().file_text(file_id.file_id());
+ let text = ctx.db().file_text(file_id.file_id(ctx.db())).text(ctx.db());
let mut text = text[..u32::from(range.end()).try_into().unwrap()].trim_end();
if !text.ends_with(')') {
return None;
@@ -633,7 +629,7 @@ fn handle_call(
to_insert.push(',');
}
- builder.edit_file(file_id);
+ builder.edit_file(file_id.file_id(ctx.db()));
builder.insert(offset, to_insert);
Some(())