Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/ide-completion/src/tests/special.rs')
-rw-r--r--crates/ide-completion/src/tests/special.rs90
1 files changed, 89 insertions, 1 deletions
diff --git a/crates/ide-completion/src/tests/special.rs b/crates/ide-completion/src/tests/special.rs
index 033dc99c26..cad4af4937 100644
--- a/crates/ide-completion/src/tests/special.rs
+++ b/crates/ide-completion/src/tests/special.rs
@@ -2,13 +2,22 @@
use expect_test::{expect, Expect};
-use crate::tests::{check_edit, completion_list_no_kw};
+use crate::tests::{check_edit, completion_list_no_kw, completion_list_with_trigger_character};
fn check(ra_fixture: &str, expect: Expect) {
let actual = completion_list_no_kw(ra_fixture);
expect.assert_eq(&actual)
}
+pub(crate) fn check_with_trigger_character(
+ ra_fixture: &str,
+ trigger_character: Option<char>,
+ expect: Expect,
+) {
+ let actual = completion_list_with_trigger_character(ra_fixture, trigger_character);
+ expect.assert_eq(&actual)
+}
+
#[test]
fn completes_if_prefix_is_keyword() {
check_edit(
@@ -893,3 +902,82 @@ fn f() {
"#]],
);
}
+
+#[test]
+fn completes_after_colon_with_trigger() {
+ check_with_trigger_character(
+ r#"
+//- minicore: option
+fn foo { ::$0 }
+"#,
+ Some(':'),
+ expect![[r#"
+ md core
+ "#]],
+ );
+ check_with_trigger_character(
+ r#"
+//- minicore: option
+fn foo { /* test */::$0 }
+"#,
+ Some(':'),
+ expect![[r#"
+ md core
+ "#]],
+ );
+
+ check_with_trigger_character(
+ r#"
+fn foo { crate::$0 }
+"#,
+ Some(':'),
+ expect![[r#"
+ fn foo() fn()
+ "#]],
+ );
+
+ check_with_trigger_character(
+ r#"
+fn foo { crate:$0 }
+"#,
+ Some(':'),
+ expect![""],
+ );
+}
+
+#[test]
+fn completes_after_colon_without_trigger() {
+ check_with_trigger_character(
+ r#"
+fn foo { crate::$0 }
+"#,
+ None,
+ expect![[r#"
+ fn foo() fn()
+ "#]],
+ );
+
+ check_with_trigger_character(
+ r#"
+fn foo { crate:$0 }
+"#,
+ None,
+ expect![""],
+ );
+}
+
+#[test]
+fn no_completions_in_invalid_path() {
+ check(
+ r#"
+fn foo { crate:::$0 }
+"#,
+ expect![""],
+ );
+ check(
+ r#"
+fn foo { crate::::$0 }
+"#,
+ expect![""],
+ )
+}