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.rs291
1 files changed, 291 insertions, 0 deletions
diff --git a/crates/ide-completion/src/tests/special.rs b/crates/ide-completion/src/tests/special.rs
index f8a6f6cd3e..3824720839 100644
--- a/crates/ide-completion/src/tests/special.rs
+++ b/crates/ide-completion/src/tests/special.rs
@@ -989,3 +989,294 @@ fn foo { crate::::$0 }
expect![""],
)
}
+
+#[test]
+fn completes_struct_via_doc_alias_in_fn_body() {
+ check(
+ r#"
+#[doc(alias = "Bar")]
+struct Foo;
+
+fn here_we_go() {
+ $0
+}
+"#,
+ expect![[r#"
+ fn here_we_go() fn()
+ st Foo (alias Bar)
+ bt u32
+ kw const
+ kw crate::
+ kw enum
+ kw extern
+ kw false
+ kw fn
+ kw for
+ kw if
+ kw if let
+ kw impl
+ kw let
+ kw loop
+ kw match
+ kw mod
+ kw return
+ kw self::
+ kw static
+ kw struct
+ kw trait
+ kw true
+ kw type
+ kw union
+ kw unsafe
+ kw use
+ kw while
+ kw while let
+ sn macro_rules
+ sn pd
+ sn ppd
+ "#]],
+ );
+}
+
+#[test]
+fn completes_struct_via_multiple_doc_aliases_in_fn_body() {
+ check(
+ r#"
+#[doc(alias("Bar", "Qux"))]
+#[doc(alias = "Baz")]
+struct Foo;
+
+fn here_we_go() {
+ B$0
+}
+"#,
+ expect![[r#"
+ fn here_we_go() fn()
+ st Foo (alias Bar, Qux, Baz)
+ bt u32
+ kw const
+ kw crate::
+ kw enum
+ kw extern
+ kw false
+ kw fn
+ kw for
+ kw if
+ kw if let
+ kw impl
+ kw let
+ kw loop
+ kw match
+ kw mod
+ kw return
+ kw self::
+ kw static
+ kw struct
+ kw trait
+ kw true
+ kw type
+ kw union
+ kw unsafe
+ kw use
+ kw while
+ kw while let
+ sn macro_rules
+ sn pd
+ sn ppd
+ "#]],
+ );
+}
+
+#[test]
+fn completes_field_name_via_doc_alias_in_fn_body() {
+ check(
+ r#"
+struct Foo {
+ #[doc(alias = "qux")]
+ bar: u8
+};
+
+fn here_we_go() {
+ let foo = Foo { q$0 }
+}
+"#,
+ expect![[r#"
+ fd bar (alias qux) u8
+ "#]],
+ );
+}
+
+#[test]
+fn completes_struct_fn_name_via_doc_alias_in_fn_body() {
+ check(
+ r#"
+struct Foo;
+impl Foo {
+ #[doc(alias = "qux")]
+ fn bar() -> u8 { 1 }
+}
+
+fn here_we_go() {
+ Foo::q$0
+}
+"#,
+ expect![[r#"
+ fn bar() (alias qux) fn() -> u8
+ "#]],
+ );
+}
+
+#[test]
+fn completes_method_name_via_doc_alias_in_fn_body() {
+ check(
+ r#"
+struct Foo {
+ bar: u8
+}
+impl Foo {
+ #[doc(alias = "qux")]
+ fn baz(&self) -> u8 {
+ self.bar
+ }
+}
+
+fn here_we_go() {
+ let foo = Foo { field: 42 };
+ foo.q$0
+}
+"#,
+ expect![[r#"
+ fd bar u8
+ me baz() (alias qux) fn(&self) -> u8
+ sn box Box::new(expr)
+ sn call function(expr)
+ sn dbg dbg!(expr)
+ sn dbgr dbg!(&expr)
+ sn let let
+ sn letm let mut
+ sn match match expr {}
+ sn ref &expr
+ sn refm &mut expr
+ sn unsafe unsafe {}
+ "#]],
+ );
+}
+
+#[test]
+fn completes_fn_name_via_doc_alias_in_fn_body() {
+ check(
+ r#"
+#[doc(alias = "qux")]
+fn foo() {}
+fn bar() { qu$0 }
+"#,
+ expect![[r#"
+ fn bar() fn()
+ fn foo() (alias qux) fn()
+ bt u32
+ kw const
+ kw crate::
+ kw enum
+ kw extern
+ kw false
+ kw fn
+ kw for
+ kw if
+ kw if let
+ kw impl
+ kw let
+ kw loop
+ kw match
+ kw mod
+ kw return
+ kw self::
+ kw static
+ kw struct
+ kw trait
+ kw true
+ kw type
+ kw union
+ kw unsafe
+ kw use
+ kw while
+ kw while let
+ sn macro_rules
+ sn pd
+ sn ppd
+ "#]],
+ );
+}
+
+#[test]
+fn completes_struct_name_via_doc_alias_in_another_mod() {
+ check(
+ r#"
+mod foo {
+ #[doc(alias = "Qux")]
+ pub struct Bar(u8);
+}
+
+fn here_we_go() {
+ use foo;
+ let foo = foo::Q$0
+}
+"#,
+ expect![[r#"
+ st Bar (alias Qux)
+ "#]],
+ );
+}
+
+#[test]
+fn completes_use_via_doc_alias_in_another_mod() {
+ check(
+ r#"
+mod foo {
+ #[doc(alias = "Qux")]
+ pub struct Bar(u8);
+}
+
+fn here_we_go() {
+ use foo::Q$0;
+}
+"#,
+ expect![[r#"
+ st Bar (alias Qux)
+ "#]],
+ );
+}
+
+#[test]
+fn completes_flyimport_with_doc_alias_in_another_mod() {
+ check(
+ r#"
+mod foo {
+ #[doc(alias = "Qux")]
+ pub struct Bar();
+}
+
+fn here_we_go() {
+ let foo = Bar$0
+}
+"#,
+ expect![[r#"
+ fn here_we_go() fn()
+ md foo
+ st Bar (alias Qux) (use foo::Bar)
+ bt u32
+ kw crate::
+ kw false
+ kw for
+ kw if
+ kw if let
+ kw loop
+ kw match
+ kw return
+ kw self::
+ kw true
+ kw unsafe
+ kw while
+ kw while let
+ "#]],
+ );
+}