mirror of
https://github.com/rust-lang/rust.git
synced 2025-01-22 12:43:36 +00:00
Fix pointed out
This commit is contained in:
parent
cd1ef8de18
commit
7a04f72220
@ -109,10 +109,15 @@ pub(crate) fn extract_function(acc: &mut Assists, ctx: &AssistContext) -> Option
|
||||
|
||||
let new_indent = IndentLevel::from_node(&insert_after);
|
||||
let old_indent = fun.body.indent_level();
|
||||
let is_body_contains_await = body_contains_await(&fun.body);
|
||||
|
||||
builder.replace(target_range, format_replacement(ctx, &fun, old_indent));
|
||||
builder.replace(
|
||||
target_range,
|
||||
format_replacement(ctx, &fun, old_indent, is_body_contains_await),
|
||||
);
|
||||
|
||||
let fn_def = format_function(ctx, module, &fun, old_indent, new_indent);
|
||||
let fn_def =
|
||||
format_function(ctx, module, &fun, old_indent, new_indent, is_body_contains_await);
|
||||
let insert_offset = insert_after.text_range().end();
|
||||
match ctx.config.snippet_cap {
|
||||
Some(cap) => builder.insert_snippet(cap, insert_offset, fn_def),
|
||||
@ -954,7 +959,12 @@ fn scope_for_fn_insertion_node(node: &SyntaxNode, anchor: Anchor) -> Option<Synt
|
||||
last_ancestor
|
||||
}
|
||||
|
||||
fn format_replacement(ctx: &AssistContext, fun: &Function, indent: IndentLevel) -> String {
|
||||
fn format_replacement(
|
||||
ctx: &AssistContext,
|
||||
fun: &Function,
|
||||
indent: IndentLevel,
|
||||
is_body_contains_await: bool,
|
||||
) -> String {
|
||||
let ret_ty = fun.return_type(ctx);
|
||||
|
||||
let args = fun.params.iter().map(|param| param.to_arg(ctx));
|
||||
@ -994,7 +1004,7 @@ fn format_replacement(ctx: &AssistContext, fun: &Function, indent: IndentLevel)
|
||||
}
|
||||
}
|
||||
format_to!(buf, "{}", expr);
|
||||
if body_contains_await(&fun.body) {
|
||||
if is_body_contains_await {
|
||||
buf.push_str(".await");
|
||||
}
|
||||
if fun.ret_ty.is_unit()
|
||||
@ -1125,12 +1135,13 @@ fn format_function(
|
||||
fun: &Function,
|
||||
old_indent: IndentLevel,
|
||||
new_indent: IndentLevel,
|
||||
is_body_contains_await: bool,
|
||||
) -> String {
|
||||
let mut fn_def = String::new();
|
||||
let params = make_param_list(ctx, module, fun);
|
||||
let ret_ty = make_ret_ty(ctx, module, fun);
|
||||
let body = make_body(ctx, old_indent, new_indent, fun);
|
||||
let async_kw = if body_contains_await(&fun.body) { "async " } else { "" };
|
||||
let async_kw = if is_body_contains_await { "async " } else { "" };
|
||||
match ctx.config.snippet_cap {
|
||||
Some(_) => format_to!(fn_def, "\n\n{}{}fn $0{}{}", new_indent, async_kw, fun.name, params),
|
||||
None => format_to!(fn_def, "\n\n{}{}fn {}{}", new_indent, async_kw, fun.name, params),
|
||||
|
Loading…
Reference in New Issue
Block a user