diff options
Diffstat (limited to 'crates/assists/src/handlers/auto_import.rs')
-rw-r--r-- | crates/assists/src/handlers/auto_import.rs | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/crates/assists/src/handlers/auto_import.rs b/crates/assists/src/handlers/auto_import.rs index f3b4c5708..66e819154 100644 --- a/crates/assists/src/handlers/auto_import.rs +++ b/crates/assists/src/handlers/auto_import.rs | |||
@@ -1,11 +1,13 @@ | |||
1 | use std::collections::BTreeSet; | 1 | use std::collections::BTreeSet; |
2 | 2 | ||
3 | use ast::make; | ||
3 | use either::Either; | 4 | use either::Either; |
4 | use hir::{ | 5 | use hir::{ |
5 | AsAssocItem, AssocItemContainer, ModPath, Module, ModuleDef, PathResolution, Semantics, Trait, | 6 | AsAssocItem, AssocItemContainer, ModPath, Module, ModuleDef, PathResolution, Semantics, Trait, |
6 | Type, | 7 | Type, |
7 | }; | 8 | }; |
8 | use ide_db::{imports_locator, RootDatabase}; | 9 | use ide_db::{imports_locator, RootDatabase}; |
10 | use insert_use::ImportScope; | ||
9 | use rustc_hash::FxHashSet; | 11 | use rustc_hash::FxHashSet; |
10 | use syntax::{ | 12 | use syntax::{ |
11 | ast::{self, AstNode}, | 13 | ast::{self, AstNode}, |
@@ -16,8 +18,6 @@ use crate::{ | |||
16 | utils::{insert_use, MergeBehaviour}, | 18 | utils::{insert_use, MergeBehaviour}, |
17 | AssistContext, AssistId, AssistKind, Assists, GroupLabel, | 19 | AssistContext, AssistId, AssistKind, Assists, GroupLabel, |
18 | }; | 20 | }; |
19 | use ast::make; | ||
20 | use insert_use::find_insert_use_container; | ||
21 | 21 | ||
22 | // Assist: auto_import | 22 | // Assist: auto_import |
23 | // | 23 | // |
@@ -47,8 +47,9 @@ pub(crate) fn auto_import(acc: &mut Assists, ctx: &AssistContext) -> Option<()> | |||
47 | 47 | ||
48 | let range = ctx.sema.original_range(&auto_import_assets.syntax_under_caret).range; | 48 | let range = ctx.sema.original_range(&auto_import_assets.syntax_under_caret).range; |
49 | let group = auto_import_assets.get_import_group_message(); | 49 | let group = auto_import_assets.get_import_group_message(); |
50 | let container = find_insert_use_container(&auto_import_assets.syntax_under_caret, ctx)?; | 50 | let scope = |
51 | let syntax = container.either(|l| l.syntax().clone(), |r| r.syntax().clone()); | 51 | ImportScope::find_insert_use_container(&auto_import_assets.syntax_under_caret, ctx)?; |
52 | let syntax = scope.as_syntax_node(); | ||
52 | for import in proposed_imports { | 53 | for import in proposed_imports { |
53 | acc.add_group( | 54 | acc.add_group( |
54 | &group, | 55 | &group, |
@@ -57,7 +58,7 @@ pub(crate) fn auto_import(acc: &mut Assists, ctx: &AssistContext) -> Option<()> | |||
57 | range, | 58 | range, |
58 | |builder| { | 59 | |builder| { |
59 | let new_syntax = insert_use( | 60 | let new_syntax = insert_use( |
60 | &syntax, | 61 | &scope, |
61 | make::path_from_text(&import.to_string()), | 62 | make::path_from_text(&import.to_string()), |
62 | Some(MergeBehaviour::Full), | 63 | Some(MergeBehaviour::Full), |
63 | ); | 64 | ); |