diff options
Diffstat (limited to 'src/tools/rust-analyzer/crates/ide-completion/src/tests/item.rs')
-rw-r--r-- | src/tools/rust-analyzer/crates/ide-completion/src/tests/item.rs | 154 |
1 files changed, 154 insertions, 0 deletions
diff --git a/src/tools/rust-analyzer/crates/ide-completion/src/tests/item.rs b/src/tools/rust-analyzer/crates/ide-completion/src/tests/item.rs new file mode 100644 index 000000000..409413c1d --- /dev/null +++ b/src/tools/rust-analyzer/crates/ide-completion/src/tests/item.rs @@ -0,0 +1,154 @@ +//! Completion tests for item specifics overall. +//! +//! Except for use items which are tested in [super::use_tree] and mod declarations with are tested +//! in [crate::completions::mod_]. +use expect_test::{expect, Expect}; + +use crate::tests::{completion_list, BASE_ITEMS_FIXTURE}; + +fn check(ra_fixture: &str, expect: Expect) { + let actual = completion_list(&format!("{}{}", BASE_ITEMS_FIXTURE, ra_fixture)); + expect.assert_eq(&actual) +} + +#[test] +fn target_type_or_trait_in_impl_block() { + check( + r#" +impl Tra$0 +"#, + expect![[r#" + en Enum + ma makro!(…) macro_rules! makro + md module + st Record + st Tuple + st Unit + tt Trait + un Union + bt u32 + kw crate:: + kw self:: + "#]], + ) +} + +#[test] +fn target_type_in_trait_impl_block() { + check( + r#" +impl Trait for Str$0 +"#, + expect![[r#" + en Enum + ma makro!(…) macro_rules! makro + md module + st Record + st Tuple + st Unit + tt Trait + un Union + bt u32 + kw crate:: + kw self:: + "#]], + ) +} + +#[test] +fn after_trait_name_in_trait_def() { + check( + r"trait A $0", + expect![[r#" + kw where + "#]], + ); +} + +#[test] +fn after_target_name_in_impl() { + check( + r"impl Trait $0", + expect![[r#" + kw for + kw where + "#]], + ); + check( + r"impl Trait f$0", + expect![[r#" + kw for + kw where + "#]], + ); + check( + r"impl Trait for Type $0", + expect![[r#" + kw where + "#]], + ); +} + +#[test] +fn completes_where() { + check( + r"struct Struct $0", + expect![[r#" + kw where + "#]], + ); + check( + r"struct Struct $0 {}", + expect![[r#" + kw where + "#]], + ); + // FIXME: This shouldn't be completed here + check( + r"struct Struct $0 ()", + expect![[r#" + kw where + "#]], + ); + check( + r"fn func() $0", + expect![[r#" + kw where + "#]], + ); + check( + r"enum Enum $0", + expect![[r#" + kw where + "#]], + ); + check( + r"enum Enum $0 {}", + expect![[r#" + kw where + "#]], + ); + check( + r"trait Trait $0 {}", + expect![[r#" + kw where + "#]], + ); +} + +#[test] +fn before_record_field() { + check( + r#" +struct Foo { + $0 + pub f: i32, +} +"#, + expect![[r#" + kw pub + kw pub(crate) + kw pub(super) + "#]], + ) +} |