From 35cfb418baa8c7f37a27152bcb1894275c2abee2 Mon Sep 17 00:00:00 2001 From: Florian Diebold Date: Sun, 10 Feb 2019 15:16:23 +0100 Subject: Add some tests --- crates/ra_hir/src/nameres/tests.rs | 119 +++++++++++++++++++++++++++++++++++++ 1 file changed, 119 insertions(+) (limited to 'crates/ra_hir/src/nameres') diff --git a/crates/ra_hir/src/nameres/tests.rs b/crates/ra_hir/src/nameres/tests.rs index 3dfad6bf2..91566fc98 100644 --- a/crates/ra_hir/src/nameres/tests.rs +++ b/crates/ra_hir/src/nameres/tests.rs @@ -164,6 +164,125 @@ fn re_exports() { ); } +#[test] +fn glob_1() { + let (item_map, module_id) = item_map( + " + //- /lib.rs + mod foo; + use foo::*; + <|> + + //- /foo/mod.rs + pub mod bar; + pub use self::bar::Baz; + pub struct Foo; + + //- /foo/bar.rs + pub struct Baz; + ", + ); + check_module_item_map( + &item_map, + module_id, + " + Baz: t v + Foo: t v + bar: t + foo: t + ", + ); +} + +#[test] +fn glob_2() { + let (item_map, module_id) = item_map( + " + //- /lib.rs + mod foo; + use foo::*; + <|> + + //- /foo/mod.rs + pub mod bar; + pub use self::bar::*; + pub struct Foo; + + //- /foo/bar.rs + pub struct Baz; + pub use super::*; + ", + ); + check_module_item_map( + &item_map, + module_id, + " + Baz: t v + Foo: t v + bar: t + foo: t + ", + ); +} + +#[test] +fn glob_enum() { + covers!(glob_enum); + let (item_map, module_id) = item_map( + " + //- /lib.rs + enum Foo { + Bar, Baz + } + use self::Foo::*; + <|> + ", + ); + check_module_item_map( + &item_map, + module_id, + " + Bar: t v + Baz: t v + Foo: t + ", + ); +} + +#[test] +fn glob_across_crates() { + let (mut db, sr) = MockDatabase::with_files( + " + //- /main.rs + use test_crate::*; + + //- /lib.rs + pub struct Baz; + ", + ); + let main_id = sr.files[RelativePath::new("/main.rs")]; + let lib_id = sr.files[RelativePath::new("/lib.rs")]; + + let mut crate_graph = CrateGraph::default(); + let main_crate = crate_graph.add_crate_root(main_id); + let lib_crate = crate_graph.add_crate_root(lib_id); + crate_graph.add_dep(main_crate, "test_crate".into(), lib_crate).unwrap(); + + db.set_crate_graph(Arc::new(crate_graph)); + + let module = crate::source_binder::module_from_file_id(&db, main_id).unwrap(); + let krate = module.krate(&db).unwrap(); + let item_map = db.item_map(krate); + + check_module_item_map( + &item_map, + module.module_id, + " + Baz: t v + ", + ); +} + #[test] fn module_resolution_works_for_non_standard_filenames() { let (item_map, module_id) = item_map_custom_crate_root( -- cgit v1.2.3 From 2e1d739a8063307facf9ff098c26b02005092e05 Mon Sep 17 00:00:00 2001 From: Florian Diebold Date: Sun, 10 Feb 2019 15:41:44 +0100 Subject: Import glob imports from other crates This is the easy part since we don't have to consider the fixpoint algorithm. --- crates/ra_hir/src/nameres/tests.rs | 1 + 1 file changed, 1 insertion(+) (limited to 'crates/ra_hir/src/nameres') diff --git a/crates/ra_hir/src/nameres/tests.rs b/crates/ra_hir/src/nameres/tests.rs index 91566fc98..9c0e4ef29 100644 --- a/crates/ra_hir/src/nameres/tests.rs +++ b/crates/ra_hir/src/nameres/tests.rs @@ -251,6 +251,7 @@ fn glob_enum() { #[test] fn glob_across_crates() { + covers!(glob_across_crates); let (mut db, sr) = MockDatabase::with_files( " //- /main.rs -- cgit v1.2.3