Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/ide-assists/src/handlers/convert_bool_to_enum.rs')
-rw-r--r--crates/ide-assists/src/handlers/convert_bool_to_enum.rs74
1 files changed, 34 insertions, 40 deletions
diff --git a/crates/ide-assists/src/handlers/convert_bool_to_enum.rs b/crates/ide-assists/src/handlers/convert_bool_to_enum.rs
index f73b8c4fd0..2ad1336237 100644
--- a/crates/ide-assists/src/handlers/convert_bool_to_enum.rs
+++ b/crates/ide-assists/src/handlers/convert_bool_to_enum.rs
@@ -13,12 +13,7 @@ use ide_db::{
use itertools::Itertools;
use syntax::{
AstNode, NodeOrToken, SyntaxKind, SyntaxNode, T,
- ast::{
- self, HasName,
- edit::IndentLevel,
- edit_in_place::{AttrsOwnerEdit, Indent},
- make,
- },
+ ast::{self, HasName, edit::IndentLevel, edit_in_place::Indent, make},
};
use crate::{
@@ -334,8 +329,6 @@ fn augment_references_with_imports(
) -> Vec<FileReferenceWithImport> {
let mut visited_modules = FxHashSet::default();
- let cfg = ctx.config.import_path_config();
-
let edition = target_module.krate().edition(ctx.db());
references
.into_iter()
@@ -350,22 +343,27 @@ fn augment_references_with_imports(
{
visited_modules.insert(ref_module);
- let import_scope = ImportScope::find_insert_use_container(name.syntax(), &ctx.sema);
- let path = ref_module
- .find_use_path(
- ctx.sema.db,
- ModuleDef::Module(*target_module),
- ctx.config.insert_use.prefix_kind,
- cfg,
- )
- .map(|mod_path| {
- make::path_concat(
- mod_path_to_ast(&mod_path, edition),
- make::path_from_text("Bool"),
- )
- });
+ ImportScope::find_insert_use_container(name.syntax(), &ctx.sema).and_then(
+ |import_scope| {
+ let cfg =
+ ctx.config.find_path_config(ctx.sema.is_nightly(target_module.krate()));
+ let path = ref_module
+ .find_use_path(
+ ctx.sema.db,
+ ModuleDef::Module(*target_module),
+ ctx.config.insert_use.prefix_kind,
+ cfg,
+ )
+ .map(|mod_path| {
+ make::path_concat(
+ mod_path_to_ast(&mod_path, edition),
+ make::path_from_text("Bool"),
+ )
+ })?;
- import_scope.zip(path)
+ Some((import_scope, path))
+ },
+ )
} else {
None
};
@@ -506,18 +504,6 @@ fn node_to_insert_before(target_node: SyntaxNode) -> SyntaxNode {
}
fn make_bool_enum(make_pub: bool) -> ast::Enum {
- let enum_def = make::enum_(
- if make_pub { Some(make::visibility_pub()) } else { None },
- make::name("Bool"),
- None,
- None,
- make::variant_list(vec![
- make::variant(None, make::name("True"), None, None),
- make::variant(None, make::name("False"), None, None),
- ]),
- )
- .clone_for_update();
-
let derive_eq = make::attr_outer(make::meta_token_tree(
make::ext::ident_path("derive"),
make::token_tree(
@@ -529,11 +515,19 @@ fn make_bool_enum(make_pub: bool) -> ast::Enum {
NodeOrToken::Token(make::tokens::ident("Eq")),
],
),
- ))
- .clone_for_update();
- enum_def.add_attr(derive_eq);
-
- enum_def
+ ));
+ make::enum_(
+ [derive_eq],
+ if make_pub { Some(make::visibility_pub()) } else { None },
+ make::name("Bool"),
+ None,
+ None,
+ make::variant_list(vec![
+ make::variant(None, make::name("True"), None, None),
+ make::variant(None, make::name("False"), None, None),
+ ]),
+ )
+ .clone_for_update()
}
#[cfg(test)]