370 lines
5.4 KiB
Rust
370 lines
5.4 KiB
Rust
use super::*;
|
|
|
|
#[test]
|
|
fn glob_1() {
|
|
check(
|
|
r#"
|
|
//- /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;
|
|
"#,
|
|
expect![[r#"
|
|
crate
|
|
Baz: t v
|
|
Foo: t v
|
|
bar: t
|
|
foo: t
|
|
|
|
crate::foo
|
|
Baz: ti vi
|
|
Foo: t v
|
|
bar: t
|
|
|
|
crate::foo::bar
|
|
Baz: t v
|
|
"#]],
|
|
);
|
|
}
|
|
|
|
#[test]
|
|
fn glob_2() {
|
|
check(
|
|
r#"
|
|
//- /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::*;
|
|
"#,
|
|
expect![[r#"
|
|
crate
|
|
Baz: t v
|
|
Foo: t v
|
|
bar: t
|
|
foo: t
|
|
|
|
crate::foo
|
|
Baz: t v
|
|
Foo: t v
|
|
bar: t
|
|
|
|
crate::foo::bar
|
|
Baz: t v
|
|
Foo: t v
|
|
bar: t
|
|
"#]],
|
|
);
|
|
}
|
|
|
|
#[test]
|
|
fn glob_privacy_1() {
|
|
check(
|
|
r"
|
|
//- /lib.rs
|
|
mod foo;
|
|
use foo::*;
|
|
|
|
//- /foo/mod.rs
|
|
pub mod bar;
|
|
pub use self::bar::*;
|
|
struct PrivateStructFoo;
|
|
|
|
//- /foo/bar.rs
|
|
pub struct Baz;
|
|
struct PrivateStructBar;
|
|
pub use super::*;
|
|
",
|
|
expect![[r#"
|
|
crate
|
|
Baz: t v
|
|
bar: t
|
|
foo: t
|
|
|
|
crate::foo
|
|
Baz: t v
|
|
PrivateStructFoo: t v
|
|
bar: t
|
|
|
|
crate::foo::bar
|
|
Baz: t v
|
|
PrivateStructBar: t v
|
|
PrivateStructFoo: t v
|
|
bar: t
|
|
"#]],
|
|
);
|
|
}
|
|
|
|
#[test]
|
|
fn glob_privacy_2() {
|
|
check(
|
|
r"
|
|
//- /lib.rs
|
|
mod foo;
|
|
use foo::*;
|
|
use foo::bar::*;
|
|
|
|
//- /foo/mod.rs
|
|
pub mod bar;
|
|
fn Foo() {};
|
|
pub struct Foo {};
|
|
|
|
//- /foo/bar.rs
|
|
pub(super) struct PrivateBaz;
|
|
struct PrivateBar;
|
|
pub(crate) struct PubCrateStruct;
|
|
",
|
|
expect![[r#"
|
|
crate
|
|
Foo: t
|
|
PubCrateStruct: t v
|
|
bar: t
|
|
foo: t
|
|
|
|
crate::foo
|
|
Foo: t v
|
|
bar: t
|
|
|
|
crate::foo::bar
|
|
PrivateBar: t v
|
|
PrivateBaz: t v
|
|
PubCrateStruct: t v
|
|
"#]],
|
|
);
|
|
}
|
|
|
|
#[test]
|
|
fn glob_across_crates() {
|
|
cov_mark::check!(glob_across_crates);
|
|
check(
|
|
r#"
|
|
//- /main.rs crate:main deps:test_crate
|
|
use test_crate::*;
|
|
|
|
//- /lib.rs crate:test_crate
|
|
pub struct Baz;
|
|
"#,
|
|
expect![[r#"
|
|
crate
|
|
Baz: t v
|
|
"#]],
|
|
);
|
|
}
|
|
|
|
#[test]
|
|
fn glob_privacy_across_crates() {
|
|
check(
|
|
r#"
|
|
//- /main.rs crate:main deps:test_crate
|
|
use test_crate::*;
|
|
|
|
//- /lib.rs crate:test_crate
|
|
pub struct Baz;
|
|
struct Foo;
|
|
"#,
|
|
expect![[r#"
|
|
crate
|
|
Baz: t v
|
|
"#]],
|
|
);
|
|
}
|
|
|
|
#[test]
|
|
fn glob_enum() {
|
|
cov_mark::check!(glob_enum);
|
|
check(
|
|
r#"
|
|
enum Foo { Bar, Baz }
|
|
use self::Foo::*;
|
|
"#,
|
|
expect![[r#"
|
|
crate
|
|
Bar: t v
|
|
Baz: t v
|
|
Foo: t
|
|
"#]],
|
|
);
|
|
}
|
|
|
|
#[test]
|
|
fn glob_enum_group() {
|
|
cov_mark::check!(glob_enum_group);
|
|
check(
|
|
r#"
|
|
enum Foo { Bar, Baz }
|
|
use self::Foo::{*};
|
|
"#,
|
|
expect![[r#"
|
|
crate
|
|
Bar: t v
|
|
Baz: t v
|
|
Foo: t
|
|
"#]],
|
|
);
|
|
}
|
|
|
|
#[test]
|
|
fn glob_shadowed_def() {
|
|
cov_mark::check!(import_shadowed);
|
|
check(
|
|
r#"
|
|
//- /lib.rs
|
|
mod foo;
|
|
mod bar;
|
|
use foo::*;
|
|
use bar::baz;
|
|
use baz::Bar;
|
|
|
|
//- /foo.rs
|
|
pub mod baz { pub struct Foo; }
|
|
|
|
//- /bar.rs
|
|
pub mod baz { pub struct Bar; }
|
|
"#,
|
|
expect![[r#"
|
|
crate
|
|
Bar: ti vi
|
|
bar: t
|
|
baz: ti
|
|
foo: t
|
|
|
|
crate::bar
|
|
baz: t
|
|
|
|
crate::bar::baz
|
|
Bar: t v
|
|
|
|
crate::foo
|
|
baz: t
|
|
|
|
crate::foo::baz
|
|
Foo: t v
|
|
"#]],
|
|
);
|
|
}
|
|
|
|
#[test]
|
|
fn glob_shadowed_def_reversed() {
|
|
check(
|
|
r#"
|
|
//- /lib.rs
|
|
mod foo;
|
|
mod bar;
|
|
use bar::baz;
|
|
use foo::*;
|
|
use baz::Bar;
|
|
|
|
//- /foo.rs
|
|
pub mod baz { pub struct Foo; }
|
|
|
|
//- /bar.rs
|
|
pub mod baz { pub struct Bar; }
|
|
"#,
|
|
expect![[r#"
|
|
crate
|
|
Bar: ti vi
|
|
bar: t
|
|
baz: ti
|
|
foo: t
|
|
|
|
crate::bar
|
|
baz: t
|
|
|
|
crate::bar::baz
|
|
Bar: t v
|
|
|
|
crate::foo
|
|
baz: t
|
|
|
|
crate::foo::baz
|
|
Foo: t v
|
|
"#]],
|
|
);
|
|
}
|
|
|
|
#[test]
|
|
fn glob_shadowed_def_dependencies() {
|
|
check(
|
|
r#"
|
|
mod a { pub mod foo { pub struct X; } }
|
|
mod b { pub use super::a::foo; }
|
|
mod c { pub mod foo { pub struct Y; } }
|
|
mod d {
|
|
use super::c::foo;
|
|
use super::b::*;
|
|
use foo::Y;
|
|
}
|
|
"#,
|
|
expect![[r#"
|
|
crate
|
|
a: t
|
|
b: t
|
|
c: t
|
|
d: t
|
|
|
|
crate::a
|
|
foo: t
|
|
|
|
crate::a::foo
|
|
X: t v
|
|
|
|
crate::b
|
|
foo: ti
|
|
|
|
crate::c
|
|
foo: t
|
|
|
|
crate::c::foo
|
|
Y: t v
|
|
|
|
crate::d
|
|
Y: ti vi
|
|
foo: ti
|
|
"#]],
|
|
);
|
|
}
|
|
|
|
#[test]
|
|
fn glob_name_collision_check_visibility() {
|
|
check(
|
|
r#"
|
|
mod event {
|
|
mod serenity {
|
|
pub fn Event() {}
|
|
}
|
|
use serenity::*;
|
|
|
|
pub struct Event {}
|
|
}
|
|
|
|
use event::Event;
|
|
"#,
|
|
expect![[r#"
|
|
crate
|
|
Event: ti
|
|
event: t
|
|
|
|
crate::event
|
|
Event: t v
|
|
serenity: t
|
|
|
|
crate::event::serenity
|
|
Event: v
|
|
"#]],
|
|
);
|
|
}
|