aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_assists/src/handlers
diff options
context:
space:
mode:
authorJonas Schievink <[email protected]>2020-06-09 17:48:44 +0100
committerJonas Schievink <[email protected]>2020-06-10 11:38:58 +0100
commita70a0ca73ceac339de4e1df6d561894e485ba5ee (patch)
tree22f5a8f1f126354aacba70bea41599b4a5d6268c /crates/ra_assists/src/handlers
parentb01fb22494eaf64c02c17fc38598a3a2dbd8e980 (diff)
ImportsLocator: use ImportMap for non-local crates
Diffstat (limited to 'crates/ra_assists/src/handlers')
-rw-r--r--crates/ra_assists/src/handlers/auto_import.rs47
1 files changed, 46 insertions, 1 deletions
diff --git a/crates/ra_assists/src/handlers/auto_import.rs b/crates/ra_assists/src/handlers/auto_import.rs
index edf96d50e..1f4142747 100644
--- a/crates/ra_assists/src/handlers/auto_import.rs
+++ b/crates/ra_assists/src/handlers/auto_import.rs
@@ -130,7 +130,7 @@ impl AutoImportAssets {
130 fn search_for_imports(&self, db: &RootDatabase) -> BTreeSet<ModPath> { 130 fn search_for_imports(&self, db: &RootDatabase) -> BTreeSet<ModPath> {
131 let _p = profile("auto_import::search_for_imports"); 131 let _p = profile("auto_import::search_for_imports");
132 let current_crate = self.module_with_name_to_import.krate(); 132 let current_crate = self.module_with_name_to_import.krate();
133 ImportsLocator::new(db) 133 ImportsLocator::new(db, current_crate)
134 .find_imports(&self.get_search_query()) 134 .find_imports(&self.get_search_query())
135 .into_iter() 135 .into_iter()
136 .filter_map(|candidate| match &self.import_candidate { 136 .filter_map(|candidate| match &self.import_candidate {
@@ -841,4 +841,49 @@ fn main() {
841 ", 841 ",
842 ) 842 )
843 } 843 }
844
845 #[test]
846 fn dep_import() {
847 check_assist(
848 auto_import,
849 r"
850 //- /lib.rs crate:dep
851 pub struct Struct;
852
853 //- /main.rs crate:main deps:dep
854 fn main() {
855 Struct<|>
856 }",
857 r"use dep::Struct;
858
859fn main() {
860 Struct
861}
862",
863 );
864 }
865
866 #[test]
867 fn whole_segment() {
868 check_assist(
869 auto_import,
870 r"
871 //- /lib.rs crate:dep
872 pub mod fmt {
873 pub trait Display {}
874 }
875
876 pub fn panic_fmt() {}
877
878 //- /main.rs crate:main deps:dep
879 struct S;
880
881 impl f<|>mt::Display for S {}",
882 r"use dep::fmt;
883
884struct S;
885impl fmt::Display for S {}
886",
887 );
888 }
844} 889}