From 11115ebad8d0cb367478a4f154abe08c0c25aa95 Mon Sep 17 00:00:00 2001 From: Lukas Wirth Date: Wed, 16 Jun 2021 18:50:18 +0200 Subject: Don't complete paths after attributes --- crates/ide_completion/src/tests/item_list.rs | 141 +++++++++++++++++++-------- 1 file changed, 100 insertions(+), 41 deletions(-) (limited to 'crates/ide_completion/src/tests') diff --git a/crates/ide_completion/src/tests/item_list.rs b/crates/ide_completion/src/tests/item_list.rs index c8aa44d88..33b23b8b4 100644 --- a/crates/ide_completion/src/tests/item_list.rs +++ b/crates/ide_completion/src/tests/item_list.rs @@ -9,7 +9,7 @@ fn in_mod_item_list() { $0 } "#, - expect![[r#" + expect![[r##" kw pub(crate) kw pub kw unsafe @@ -28,22 +28,15 @@ fn in_mod_item_list() { sn tmod (Test module) sn tfn (Test function) sn macro_rules - "#]], + ma foo!(…) #[macro_export] macro_rules! foo + "##]], ) } #[test] fn in_source_file_item_list() { check( - r#" -enum Enum { Variant } -struct MyStruct {} -#[macro_export] -macro_rules! foo {} -mod bar {} -const CONST: () = (); - -$0"#, + r#"$0"#, expect![[r##" kw pub(crate) kw pub @@ -71,18 +64,10 @@ $0"#, } #[test] -fn in_qualified_path() { +fn in_item_list_after_attr() { check( - r#" -enum Enum { Variant } -struct MyStruct {} -#[macro_export] -macro_rules! foo {} -mod bar {} -const CONST: () = (); - -crate::$0"#, - expect![[r##" + r#"#[attr] $0"#, + expect![[r#" kw pub(crate) kw pub kw unsafe @@ -101,8 +86,32 @@ crate::$0"#, sn tmod (Test module) sn tfn (Test function) sn macro_rules + "#]], + ) +} + +#[test] +fn in_qualified_path() { + check( + r#"crate::$0"#, + expect![[r##" + kw pub(crate) + kw pub + kw unsafe + kw fn + kw const + kw type + kw impl + kw extern + kw use + kw trait + kw static + kw mod + kw enum + kw struct + kw union md bar - ma foo!(…) #[macro_export] macro_rules! foo + ma foo!(…) #[macro_export] macro_rules! foo "##]], ) } @@ -110,15 +119,7 @@ crate::$0"#, #[test] fn after_unsafe_token() { check( - r#" -enum Enum { Variant } -struct MyStruct {} -#[macro_export] -macro_rules! foo {} -mod bar {} -const CONST: () = (); - -unsafe $0"#, + r#"unsafe $0"#, expect![[r#" kw fn kw trait @@ -130,15 +131,7 @@ unsafe $0"#, #[test] fn after_visibility() { check( - r#" -enum Enum { Variant } -struct MyStruct {} -#[macro_export] -macro_rules! foo {} -mod bar {} -const CONST: () = (); - -pub $0"#, + r#"pub $0"#, expect![[r#" kw unsafe kw fn @@ -154,3 +147,69 @@ pub $0"#, "#]], ); } + +#[test] +fn after_visibility_unsafe() { + // FIXME this shouldn't show `impl` + check( + r#"pub unsafe $0"#, + expect![[r#" + kw fn + kw trait + kw impl + "#]], + ); +} + +#[test] +fn in_impl_assoc_item_list() { + check( + r#"impl Struct { + $0 +}"#, + expect![[r##" + kw pub(crate) + kw pub + kw unsafe + kw fn + kw const + kw type + md bar + ma foo!(…) #[macro_export] macro_rules! foo + ma foo!(…) #[macro_export] macro_rules! foo + "##]], + ) +} + +#[test] +fn in_impl_assoc_item_list_after_attr() { + check( + r#"impl Struct { + #[attr] $0 +}"#, + expect![[r#" + kw pub(crate) + kw pub + kw unsafe + kw fn + kw const + kw type + "#]], + ) +} + +#[test] +fn in_trait_assoc_item_list() { + check( + r"trait Foo { $0 }", + expect![[r##" + kw unsafe + kw fn + kw const + kw type + md bar + ma foo!(…) #[macro_export] macro_rules! foo + ma foo!(…) #[macro_export] macro_rules! foo + "##]], + ); +} -- cgit v1.2.3