aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_ide/src/completion/presentation.rs
diff options
context:
space:
mode:
authorAleksey Kladov <[email protected]>2020-07-14 12:51:43 +0100
committerAleksey Kladov <[email protected]>2020-07-14 12:51:43 +0100
commitf7f4ea633b974cf90fb69120ff23908990a24bda (patch)
tree29f9903134d9fe820e3f9afa44ad8b237298bf24 /crates/ra_ide/src/completion/presentation.rs
parentf823386db85ec1f0ee973b9c0534a9902dbcc2e2 (diff)
Don't duplicate parens in patterns
Diffstat (limited to 'crates/ra_ide/src/completion/presentation.rs')
-rw-r--r--crates/ra_ide/src/completion/presentation.rs33
1 files changed, 32 insertions, 1 deletions
diff --git a/crates/ra_ide/src/completion/presentation.rs b/crates/ra_ide/src/completion/presentation.rs
index e23971526..64349dcb8 100644
--- a/crates/ra_ide/src/completion/presentation.rs
+++ b/crates/ra_ide/src/completion/presentation.rs
@@ -384,10 +384,17 @@ impl Builder {
384 if !ctx.config.add_call_parenthesis { 384 if !ctx.config.add_call_parenthesis {
385 return self; 385 return self;
386 } 386 }
387 if ctx.use_item_syntax.is_some() || ctx.is_call { 387 if ctx.use_item_syntax.is_some() {
388 mark::hit!(no_parens_in_use_item); 388 mark::hit!(no_parens_in_use_item);
389 return self; 389 return self;
390 } 390 }
391 if ctx.is_pattern_call {
392 mark::hit!(dont_duplicate_pattern_parens);
393 return self;
394 }
395 if ctx.is_call {
396 return self;
397 }
391 398
392 // Don't add parentheses if the expected type is some function reference. 399 // Don't add parentheses if the expected type is some function reference.
393 if let Some(ty) = &ctx.expected_type { 400 if let Some(ty) = &ctx.expected_type {
@@ -908,6 +915,30 @@ fn main(value: Option<i32>) {
908 } 915 }
909 916
910 #[test] 917 #[test]
918 fn dont_duplicate_pattern_parens() {
919 mark::check!(dont_duplicate_pattern_parens);
920 check_edit(
921 "Var",
922 r#"
923enum E { Var(i32) }
924fn main() {
925 match E::Var(92) {
926 E::<|>(92) => (),
927 }
928}
929"#,
930 r#"
931enum E { Var(i32) }
932fn main() {
933 match E::Var(92) {
934 E::Var(92) => (),
935 }
936}
937"#,
938 );
939 }
940
941 #[test]
911 fn no_call_parens_if_fn_ptr_needed() { 942 fn no_call_parens_if_fn_ptr_needed() {
912 mark::check!(no_call_parens_if_fn_ptr_needed); 943 mark::check!(no_call_parens_if_fn_ptr_needed);
913 check_edit( 944 check_edit(