aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLukas Wirth <[email protected]>2021-06-17 14:54:59 +0100
committerLukas Wirth <[email protected]>2021-06-17 15:02:51 +0100
commit2ac03ef1d6536955fb53baf25b9777e2a5176837 (patch)
treebb2c358a05ded61ee043b0b2271877e5ac8ac716
parent2a48b532208de413e4e5d39e81c33a4644ecaa22 (diff)
Don't complete keywords in attributes inside expressions
-rw-r--r--crates/ide_completion/src/completions/attribute.rs3
-rw-r--r--crates/ide_completion/src/completions/keyword.rs4
2 files changed, 5 insertions, 2 deletions
diff --git a/crates/ide_completion/src/completions/attribute.rs b/crates/ide_completion/src/completions/attribute.rs
index f3b11e72d..ab24a6521 100644
--- a/crates/ide_completion/src/completions/attribute.rs
+++ b/crates/ide_completion/src/completions/attribute.rs
@@ -786,13 +786,13 @@ mod tests {
786 at target_feature = "…" 786 at target_feature = "…"
787 at test 787 at test
788 at track_caller 788 at track_caller
789 kw return
790 "#]], 789 "#]],
791 ); 790 );
792 } 791 }
793 792
794 #[test] 793 #[test]
795 fn complete_attribute_on_expr() { 794 fn complete_attribute_on_expr() {
795 cov_mark::check!(no_keyword_completion_in_attr_of_expr);
796 check( 796 check(
797 r#"fn main() { #[$0] foo() }"#, 797 r#"fn main() { #[$0] foo() }"#,
798 expect![[r#" 798 expect![[r#"
@@ -802,7 +802,6 @@ mod tests {
802 at deny(…) 802 at deny(…)
803 at forbid(…) 803 at forbid(…)
804 at warn(…) 804 at warn(…)
805 kw return
806 "#]], 805 "#]],
807 ); 806 );
808 } 807 }
diff --git a/crates/ide_completion/src/completions/keyword.rs b/crates/ide_completion/src/completions/keyword.rs
index c99fdef05..07541c79c 100644
--- a/crates/ide_completion/src/completions/keyword.rs
+++ b/crates/ide_completion/src/completions/keyword.rs
@@ -48,6 +48,10 @@ pub(crate) fn complete_expr_keyword(acc: &mut Completions, ctx: &CompletionConte
48 cov_mark::hit!(no_keyword_completion_in_record_lit); 48 cov_mark::hit!(no_keyword_completion_in_record_lit);
49 return; 49 return;
50 } 50 }
51 if ctx.attribute_under_caret.is_some() {
52 cov_mark::hit!(no_keyword_completion_in_attr_of_expr);
53 return;
54 }
51 55
52 // Suggest .await syntax for types that implement Future trait 56 // Suggest .await syntax for types that implement Future trait
53 if let Some(receiver) = ctx.dot_receiver() { 57 if let Some(receiver) = ctx.dot_receiver() {