]> git.lizzy.rs Git - rust.git/commitdiff
Add some tests
authorFlorian Diebold <flodiebold@gmail.com>
Sun, 10 Feb 2019 14:16:23 +0000 (15:16 +0100)
committerFlorian Diebold <flodiebold@gmail.com>
Sun, 10 Feb 2019 15:20:01 +0000 (16:20 +0100)
crates/ra_hir/src/marks.rs
crates/ra_hir/src/nameres/tests.rs

index aba0c9968943f0f5274fe49aa8853cf29f580961..5732eeccf1e1587c3aded8c8635ca2c3ccd2bae8 100644 (file)
@@ -4,4 +4,5 @@
     type_var_cycles_resolve_completely
     type_var_cycles_resolve_as_possible
     type_var_resolves_to_int_var
+    glob_enum
 );
index 3dfad6bf2aef7869bec062faa109f92318907643..91566fc9849372c33961548b21d3bed7279a2692 100644 (file)
@@ -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(