Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/ide-assists/src/handlers/bool_to_enum.rs')
-rw-r--r--crates/ide-assists/src/handlers/bool_to_enum.rs27
1 files changed, 6 insertions, 21 deletions
diff --git a/crates/ide-assists/src/handlers/bool_to_enum.rs b/crates/ide-assists/src/handlers/bool_to_enum.rs
index 0751be1fd1..b7b00e7ed0 100644
--- a/crates/ide-assists/src/handlers/bool_to_enum.rs
+++ b/crates/ide-assists/src/handlers/bool_to_enum.rs
@@ -20,7 +20,10 @@ use syntax::{
};
use text_edit::TextRange;
-use crate::assist_context::{AssistContext, Assists};
+use crate::{
+ assist_context::{AssistContext, Assists},
+ utils,
+};
// Assist: bool_to_enum
//
@@ -238,7 +241,7 @@ fn replace_usages(
cov_mark::hit!(replaces_record_expr);
let enum_expr = bool_expr_to_enum_expr(initializer);
- replace_record_field_expr(ctx, edit, record_field, enum_expr);
+ utils::replace_record_field_expr(ctx, edit, record_field, enum_expr);
} else if let Some(pat) = find_record_pat_field_usage(&name) {
match pat {
ast::Pat::IdentPat(ident_pat) => {
@@ -281,7 +284,7 @@ fn replace_usages(
|record_field| record_field.expr().map(|expr| (record_field, expr)),
)
{
- replace_record_field_expr(
+ utils::replace_record_field_expr(
ctx,
edit,
record_field,
@@ -310,24 +313,6 @@ fn replace_usages(
}
}
-/// Replaces the record expression, handling field shorthands.
-fn replace_record_field_expr(
- ctx: &AssistContext<'_>,
- edit: &mut SourceChangeBuilder,
- record_field: ast::RecordExprField,
- initializer: ast::Expr,
-) {
- if let Some(ast::Expr::PathExpr(path_expr)) = record_field.expr() {
- // replace field shorthand
- let file_range = ctx.sema.original_range(path_expr.syntax());
- edit.insert(file_range.range.end(), format!(": {}", initializer.syntax().text()))
- } else if let Some(expr) = record_field.expr() {
- // just replace expr
- let file_range = ctx.sema.original_range(expr.syntax());
- edit.replace(file_range.range, initializer.syntax().text());
- }
-}
-
struct FileReferenceWithImport {
range: TextRange,
name: ast::NameLike,