Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/ide-completion/src/tests/visibility.rs')
-rw-r--r--crates/ide-completion/src/tests/visibility.rs89
1 files changed, 88 insertions, 1 deletions
diff --git a/crates/ide-completion/src/tests/visibility.rs b/crates/ide-completion/src/tests/visibility.rs
index 4b5a0ac1c2..b404011dfe 100644
--- a/crates/ide-completion/src/tests/visibility.rs
+++ b/crates/ide-completion/src/tests/visibility.rs
@@ -1,7 +1,7 @@
//! Completion tests for visibility modifiers.
use expect_test::expect;
-use crate::tests::{check, check_with_trigger_character};
+use crate::tests::{check, check_with_private_editable, check_with_trigger_character};
#[test]
fn empty_pub() {
@@ -78,3 +78,90 @@ mod bar {}
"#]],
);
}
+
+#[test]
+fn use_inner_public_function() {
+ check(
+ r#"
+//- /inner.rs crate:inner
+pub fn inner_public() {}
+fn inner_private() {}
+//- /foo.rs crate:foo deps:inner
+use inner::inner_public;
+pub fn outer_public() {}
+//- /lib.rs crate:lib deps:foo
+fn x() {
+ foo::$0
+}
+ "#,
+ expect![[r#"
+ fn outer_public() fn()
+ "#]],
+ );
+}
+
+#[test]
+fn pub_use_inner_public_function() {
+ check(
+ r#"
+//- /inner.rs crate:inner
+pub fn inner_public() {}
+fn inner_private() {}
+//- /foo.rs crate:foo deps:inner
+pub use inner::inner_public;
+pub fn outer_public() {}
+//- /lib.rs crate:lib deps:foo
+fn x() {
+ foo::$0
+}
+ "#,
+ expect![[r#"
+ fn inner_public() fn()
+ fn outer_public() fn()
+ "#]],
+ );
+}
+
+#[test]
+fn use_inner_public_function_private_editable() {
+ check_with_private_editable(
+ r#"
+//- /inner.rs crate:inner
+pub fn inner_public() {}
+fn inner_private() {}
+//- /foo.rs crate:foo deps:inner
+use inner::inner_public;
+pub fn outer_public() {}
+//- /lib.rs crate:lib deps:foo
+fn x() {
+ foo::$0
+}
+ "#,
+ expect![[r#"
+ fn inner_public() fn()
+ fn outer_public() fn()
+ "#]],
+ );
+}
+
+#[test]
+fn pub_use_inner_public_function_private_editable() {
+ check_with_private_editable(
+ r#"
+//- /inner.rs crate:inner
+pub fn inner_public() {}
+fn inner_private() {}
+//- /foo.rs crate:foo deps:inner
+pub use inner::inner_public;
+pub fn outer_public() {}
+//- /lib.rs crate:lib deps:foo
+fn x() {
+ foo::$0
+}
+ "#,
+ expect![[r#"
+ fn inner_public() fn()
+ fn outer_public() fn()
+ "#]],
+ );
+}