From 434f1520df2965240809e37ea144c61f564c1c39 Mon Sep 17 00:00:00 2001
From: Aleksey Kladov <aleksey.kladov@gmail.com>
Date: Thu, 14 Feb 2019 20:13:39 +0300
Subject: add ref postfix template

---
 .../ra_ide_api/src/completion/complete_postfix.rs  |  1 +
 ...mpletion_works_for_trivial_path_expression.snap | 29 +++++++++++++++++++---
 2 files changed, 27 insertions(+), 3 deletions(-)

(limited to 'crates/ra_ide_api/src/completion')

diff --git a/crates/ra_ide_api/src/completion/complete_postfix.rs b/crates/ra_ide_api/src/completion/complete_postfix.rs
index 10a3c8db7..b7dc50c34 100644
--- a/crates/ra_ide_api/src/completion/complete_postfix.rs
+++ b/crates/ra_ide_api/src/completion/complete_postfix.rs
@@ -30,6 +30,7 @@ pub(super) fn complete_postfix(acc: &mut Completions, ctx: &CompletionContext) {
     if let Some(dot_receiver) = ctx.dot_receiver {
         let receiver_text = dot_receiver.syntax().text().to_string();
         postfix_snippet(ctx, "not", &format!("!{}", receiver_text)).add_to(acc);
+        postfix_snippet(ctx, "ref", &format!("&{}", receiver_text)).add_to(acc);
         postfix_snippet(ctx, "if", &format!("if {} {{$0}}", receiver_text)).add_to(acc);
         postfix_snippet(
             ctx,
diff --git a/crates/ra_ide_api/src/completion/snapshots/completion_item__postfix_completion_works_for_trivial_path_expression.snap b/crates/ra_ide_api/src/completion/snapshots/completion_item__postfix_completion_works_for_trivial_path_expression.snap
index bc886ef0b..3e16c8e79 100644
--- a/crates/ra_ide_api/src/completion/snapshots/completion_item__postfix_completion_works_for_trivial_path_expression.snap
+++ b/crates/ra_ide_api/src/completion/snapshots/completion_item__postfix_completion_works_for_trivial_path_expression.snap
@@ -1,8 +1,8 @@
 ---
-created: "2019-02-03T11:38:42.897384636+00:00"
-creator: insta@0.5.3
-expression: kind_completions
+created: "2019-02-14T17:12:57.412523988Z"
+creator: insta@0.6.2
 source: crates/ra_ide_api/src/completion/completion_item.rs
+expression: kind_completions
 ---
 [
     CompletionItem {
@@ -97,6 +97,29 @@ source: crates/ra_ide_api/src/completion/completion_item.rs
             }
         )
     },
+    CompletionItem {
+        completion_kind: Postfix,
+        label: "ref",
+        kind: None,
+        detail: None,
+        documentation: None,
+        lookup: None,
+        insert_text: Some(
+            "&bar"
+        ),
+        insert_text_format: Snippet,
+        source_range: [76; 76),
+        text_edit: Some(
+            TextEdit {
+                atoms: [
+                    AtomTextEdit {
+                        delete: [72; 76),
+                        insert: ""
+                    }
+                ]
+            }
+        )
+    },
     CompletionItem {
         completion_kind: Postfix,
         label: "while",
-- 
cgit v1.2.3


From 5f8ec8aa10d2c012b321d9779037b6320c1f2efb Mon Sep 17 00:00:00 2001
From: Aleksey Kladov <aleksey.kladov@gmail.com>
Date: Thu, 14 Feb 2019 20:18:49 +0300
Subject: tweak postfix completions

* better label
* add refm for &mut
---
 .../ra_ide_api/src/completion/complete_postfix.rs  | 22 +++++++---
 ...mpletion_works_for_trivial_path_expression.snap | 51 +++++++++++++++++++---
 2 files changed, 60 insertions(+), 13 deletions(-)

(limited to 'crates/ra_ide_api/src/completion')

diff --git a/crates/ra_ide_api/src/completion/complete_postfix.rs b/crates/ra_ide_api/src/completion/complete_postfix.rs
index b7dc50c34..d1f6b9433 100644
--- a/crates/ra_ide_api/src/completion/complete_postfix.rs
+++ b/crates/ra_ide_api/src/completion/complete_postfix.rs
@@ -15,7 +15,7 @@ use ra_syntax::{
 };
 use ra_text_edit::TextEditBuilder;
 
-fn postfix_snippet(ctx: &CompletionContext, label: &str, snippet: &str) -> Builder {
+fn postfix_snippet(ctx: &CompletionContext, label: &str, detail: &str, snippet: &str) -> Builder {
     let replace_range = ctx.source_range();
     let receiver_range = ctx.dot_receiver.expect("no receiver available").syntax().range();
     let delete_range = TextRange::from_to(receiver_range.start(), replace_range.start());
@@ -23,23 +23,33 @@ fn postfix_snippet(ctx: &CompletionContext, label: &str, snippet: &str) -> Build
     builder.delete(delete_range);
     CompletionItem::new(CompletionKind::Postfix, replace_range, label)
         .snippet(snippet)
+        .detail(detail)
         .text_edit(builder.finish())
 }
 
 pub(super) fn complete_postfix(acc: &mut Completions, ctx: &CompletionContext) {
     if let Some(dot_receiver) = ctx.dot_receiver {
         let receiver_text = dot_receiver.syntax().text().to_string();
-        postfix_snippet(ctx, "not", &format!("!{}", receiver_text)).add_to(acc);
-        postfix_snippet(ctx, "ref", &format!("&{}", receiver_text)).add_to(acc);
-        postfix_snippet(ctx, "if", &format!("if {} {{$0}}", receiver_text)).add_to(acc);
+        postfix_snippet(ctx, "not", "!expr", &format!("!{}", receiver_text)).add_to(acc);
+        postfix_snippet(ctx, "ref", "&expr", &format!("&{}", receiver_text)).add_to(acc);
+        postfix_snippet(ctx, "mref", "&mut expr", &format!("&mut {}", receiver_text)).add_to(acc);
+        postfix_snippet(ctx, "if", "if expr {}", &format!("if {} {{$0}}", receiver_text))
+            .add_to(acc);
         postfix_snippet(
             ctx,
             "match",
+            "match expr {}",
             &format!("match {} {{\n${{1:_}} => {{$0\\}},\n}}", receiver_text),
         )
         .add_to(acc);
-        postfix_snippet(ctx, "while", &format!("while {} {{\n$0\n}}", receiver_text)).add_to(acc);
-        postfix_snippet(ctx, "dbg", &format!("dbg!({})", receiver_text)).add_to(acc);
+        postfix_snippet(
+            ctx,
+            "while",
+            "while expr {}",
+            &format!("while {} {{\n$0\n}}", receiver_text),
+        )
+        .add_to(acc);
+        postfix_snippet(ctx, "dbg", "dbg!(expr)", &format!("dbg!({})", receiver_text)).add_to(acc);
     }
 }
 
diff --git a/crates/ra_ide_api/src/completion/snapshots/completion_item__postfix_completion_works_for_trivial_path_expression.snap b/crates/ra_ide_api/src/completion/snapshots/completion_item__postfix_completion_works_for_trivial_path_expression.snap
index 3e16c8e79..6f4351445 100644
--- a/crates/ra_ide_api/src/completion/snapshots/completion_item__postfix_completion_works_for_trivial_path_expression.snap
+++ b/crates/ra_ide_api/src/completion/snapshots/completion_item__postfix_completion_works_for_trivial_path_expression.snap
@@ -1,5 +1,5 @@
 ---
-created: "2019-02-14T17:12:57.412523988Z"
+created: "2019-02-14T17:38:20.322102467Z"
 creator: insta@0.6.2
 source: crates/ra_ide_api/src/completion/completion_item.rs
 expression: kind_completions
@@ -9,7 +9,9 @@ expression: kind_completions
         completion_kind: Postfix,
         label: "dbg",
         kind: None,
-        detail: None,
+        detail: Some(
+            "dbg!(expr)"
+        ),
         documentation: None,
         lookup: None,
         insert_text: Some(
@@ -32,7 +34,9 @@ expression: kind_completions
         completion_kind: Postfix,
         label: "if",
         kind: None,
-        detail: None,
+        detail: Some(
+            "if expr {}"
+        ),
         documentation: None,
         lookup: None,
         insert_text: Some(
@@ -55,7 +59,9 @@ expression: kind_completions
         completion_kind: Postfix,
         label: "match",
         kind: None,
-        detail: None,
+        detail: Some(
+            "match expr {}"
+        ),
         documentation: None,
         lookup: None,
         insert_text: Some(
@@ -74,11 +80,38 @@ expression: kind_completions
             }
         )
     },
+    CompletionItem {
+        completion_kind: Postfix,
+        label: "mref",
+        kind: None,
+        detail: Some(
+            "&mut expr"
+        ),
+        documentation: None,
+        lookup: None,
+        insert_text: Some(
+            "&mut bar"
+        ),
+        insert_text_format: Snippet,
+        source_range: [76; 76),
+        text_edit: Some(
+            TextEdit {
+                atoms: [
+                    AtomTextEdit {
+                        delete: [72; 76),
+                        insert: ""
+                    }
+                ]
+            }
+        )
+    },
     CompletionItem {
         completion_kind: Postfix,
         label: "not",
         kind: None,
-        detail: None,
+        detail: Some(
+            "!expr"
+        ),
         documentation: None,
         lookup: None,
         insert_text: Some(
@@ -101,7 +134,9 @@ expression: kind_completions
         completion_kind: Postfix,
         label: "ref",
         kind: None,
-        detail: None,
+        detail: Some(
+            "&expr"
+        ),
         documentation: None,
         lookup: None,
         insert_text: Some(
@@ -124,7 +159,9 @@ expression: kind_completions
         completion_kind: Postfix,
         label: "while",
         kind: None,
-        detail: None,
+        detail: Some(
+            "while expr {}"
+        ),
         documentation: None,
         lookup: None,
         insert_text: Some(
-- 
cgit v1.2.3