Skip to content

Commit d33e96b

Browse files
committed
refactor: search for enum semantically
1 parent 15f0803 commit d33e96b

File tree

1 file changed

+8
-6
lines changed

1 file changed

+8
-6
lines changed

src/tools/rust-analyzer/crates/ide-assists/src/handlers/bool_to_enum.rs

+8-6
Original file line numberDiff line numberDiff line change
@@ -462,12 +462,15 @@ fn add_enum_def(
462462
target_node: SyntaxNode,
463463
target_module: &hir::Module,
464464
) -> Option<()> {
465+
let insert_before = node_to_insert_before(target_node);
466+
465467
if ctx
466-
.find_node_at_offset::<ast::SourceFile>()?
467-
.syntax()
468-
.children()
469-
.filter_map(|node| ast::Enum::cast(node).and_then(|e| ctx.sema.to_def(&e)))
470-
.any(|def| def.name(ctx.db()).as_str() == Some("Bool"))
468+
.sema
469+
.scope(&insert_before)?
470+
.module()
471+
.scope(ctx.db(), Some(*target_module))
472+
.iter()
473+
.any(|(name, _)| name.as_str() == Some("Bool"))
471474
{
472475
return None;
473476
}
@@ -482,7 +485,6 @@ fn add_enum_def(
482485
.any(|module| module.nearest_non_block_module(ctx.db()) != *target_module);
483486
let enum_def = make_bool_enum(make_enum_pub);
484487

485-
let insert_before = node_to_insert_before(target_node);
486488
let indent = IndentLevel::from_node(&insert_before);
487489
enum_def.reindent_to(indent);
488490

0 commit comments

Comments
 (0)