From 15411d4474ceaacf10787f52c916ade3dea0eb49 Mon Sep 17 00:00:00 2001
From: Kirill Bulatov <mail4score@gmail.com>
Date: Mon, 5 Aug 2019 00:28:36 +0300
Subject: Use proper inlay kinds

---
 crates/ra_ide_api/src/inlay_hints.rs | 42 +++++++++++-------------------------
 1 file changed, 13 insertions(+), 29 deletions(-)

(limited to 'crates/ra_ide_api/src')

diff --git a/crates/ra_ide_api/src/inlay_hints.rs b/crates/ra_ide_api/src/inlay_hints.rs
index a524e014f..60a2c7cf5 100644
--- a/crates/ra_ide_api/src/inlay_hints.rs
+++ b/crates/ra_ide_api/src/inlay_hints.rs
@@ -9,14 +9,9 @@ use ra_syntax::{
     SmolStr, SyntaxKind, SyntaxNode, TextRange,
 };
 
-#[derive(Debug, PartialEq, Eq, Clone)]
+#[derive(Debug, PartialEq, Eq)]
 pub enum InlayKind {
-    LetBindingType,
-    ClosureParameterType,
-    ForExpressionBindingType,
-    IfExpressionType,
-    WhileLetExpressionType,
-    MatchArmType,
+    TypeHint,
 }
 
 #[derive(Debug)]
@@ -46,7 +41,7 @@ fn get_inlay_hints(
             }
             let pat = let_statement.pat()?;
             let analyzer = SourceAnalyzer::new(db, file_id, let_statement.syntax(), None);
-            Some(get_pat_hints(db, &analyzer, pat, InlayKind::LetBindingType, false))
+            Some(get_pat_type_hints(db, &analyzer, pat, false))
         })
         .visit(|closure_parameter: LambdaExpr| {
             let analyzer = SourceAnalyzer::new(db, file_id, closure_parameter.syntax(), None);
@@ -55,15 +50,7 @@ fn get_inlay_hints(
                     .params()
                     .filter(|closure_param| closure_param.ascribed_type().is_none())
                     .filter_map(|closure_param| closure_param.pat())
-                    .map(|root_pat| {
-                        get_pat_hints(
-                            db,
-                            &analyzer,
-                            root_pat,
-                            InlayKind::ClosureParameterType,
-                            false,
-                        )
-                    })
+                    .map(|root_pat| get_pat_type_hints(db, &analyzer, root_pat, false))
                     .flatten()
                     .collect()
             })
@@ -71,17 +58,17 @@ fn get_inlay_hints(
         .visit(|for_expression: ForExpr| {
             let pat = for_expression.pat()?;
             let analyzer = SourceAnalyzer::new(db, file_id, for_expression.syntax(), None);
-            Some(get_pat_hints(db, &analyzer, pat, InlayKind::ForExpressionBindingType, false))
+            Some(get_pat_type_hints(db, &analyzer, pat, false))
         })
         .visit(|if_expr: IfExpr| {
             let pat = if_expr.condition()?.pat()?;
             let analyzer = SourceAnalyzer::new(db, file_id, if_expr.syntax(), None);
-            Some(get_pat_hints(db, &analyzer, pat, InlayKind::IfExpressionType, true))
+            Some(get_pat_type_hints(db, &analyzer, pat, true))
         })
         .visit(|while_expr: WhileExpr| {
             let pat = while_expr.condition()?.pat()?;
             let analyzer = SourceAnalyzer::new(db, file_id, while_expr.syntax(), None);
-            Some(get_pat_hints(db, &analyzer, pat, InlayKind::WhileLetExpressionType, true))
+            Some(get_pat_type_hints(db, &analyzer, pat, true))
         })
         .visit(|match_arm_list: MatchArmList| {
             let analyzer = SourceAnalyzer::new(db, file_id, match_arm_list.syntax(), None);
@@ -90,9 +77,7 @@ fn get_inlay_hints(
                     .arms()
                     .map(|match_arm| match_arm.pats())
                     .flatten()
-                    .map(|root_pat| {
-                        get_pat_hints(db, &analyzer, root_pat, InlayKind::MatchArmType, true)
-                    })
+                    .map(|root_pat| get_pat_type_hints(db, &analyzer, root_pat, true))
                     .flatten()
                     .collect(),
             )
@@ -100,11 +85,10 @@ fn get_inlay_hints(
         .accept(&node)?
 }
 
-fn get_pat_hints(
+fn get_pat_type_hints(
     db: &RootDatabase,
     analyzer: &SourceAnalyzer,
     root_pat: Pat,
-    kind: InlayKind,
     skip_root_pat_hint: bool,
 ) -> Vec<InlayHint> {
     let original_pat = &root_pat.clone();
@@ -118,7 +102,7 @@ fn get_pat_hints(
         })
         .map(|(range, pat_type)| InlayHint {
             range,
-            kind: kind.clone(),
+            kind: InlayKind::TypeHint,
             label: pat_type.display(db).to_string().into(),
         })
         .collect()
@@ -364,7 +348,7 @@ fn main() {
     if let CustomOption::Some(Test { a: CustomOption::Some(x), b: y }) = &test {};
     if let CustomOption::Some(Test { a: CustomOption::None, b: y }) = &test {};
     if let CustomOption::Some(Test { b: y, .. }) = &test {};
-    
+
     if test == CustomOption::None {}
 }"#,
         );
@@ -425,7 +409,7 @@ fn main() {
     while let CustomOption::Some(Test { a: CustomOption::Some(x), b: y }) = &test {};
     while let CustomOption::Some(Test { a: CustomOption::None, b: y }) = &test {};
     while let CustomOption::Some(Test { b: y, .. }) = &test {};
-    
+
     while test == CustomOption::None {}
 }"#,
         );
@@ -445,7 +429,7 @@ fn main() {
         let (analysis, file_id) = single_file(
             r#"
 #[derive(PartialEq)]
-enum CustomOption<T> { 
+enum CustomOption<T> {
     None,
     Some(T),
 }
-- 
cgit v1.2.3


From 3fb6462d54c498bfd8835dea29ead19d95099625 Mon Sep 17 00:00:00 2001
From: Kirill Bulatov <mail4score@gmail.com>
Date: Mon, 5 Aug 2019 00:47:14 +0300
Subject: Style and test fixes

---
 crates/ra_ide_api/src/inlay_hints.rs | 56 ++++++++++++++++++------------------
 1 file changed, 28 insertions(+), 28 deletions(-)

(limited to 'crates/ra_ide_api/src')

diff --git a/crates/ra_ide_api/src/inlay_hints.rs b/crates/ra_ide_api/src/inlay_hints.rs
index 60a2c7cf5..7b9190314 100644
--- a/crates/ra_ide_api/src/inlay_hints.rs
+++ b/crates/ra_ide_api/src/inlay_hints.rs
@@ -216,52 +216,52 @@ fn main() {
         assert_debug_snapshot_matches!(analysis.inlay_hints(file_id).unwrap(), @r#"[
     InlayHint {
         range: [193; 197),
-        kind: LetBindingType,
+        kind: TypeHint,
         label: "i32",
     },
     InlayHint {
         range: [236; 244),
-        kind: LetBindingType,
+        kind: TypeHint,
         label: "i32",
     },
     InlayHint {
         range: [275; 279),
-        kind: LetBindingType,
+        kind: TypeHint,
         label: "&str",
     },
     InlayHint {
         range: [539; 543),
-        kind: LetBindingType,
+        kind: TypeHint,
         label: "(i32, char)",
     },
     InlayHint {
         range: [566; 567),
-        kind: LetBindingType,
+        kind: TypeHint,
         label: "i32",
     },
     InlayHint {
         range: [570; 571),
-        kind: LetBindingType,
+        kind: TypeHint,
         label: "i32",
     },
     InlayHint {
         range: [573; 574),
-        kind: LetBindingType,
+        kind: TypeHint,
         label: "i32",
     },
     InlayHint {
         range: [584; 585),
-        kind: LetBindingType,
+        kind: TypeHint,
         label: "i32",
     },
     InlayHint {
         range: [577; 578),
-        kind: LetBindingType,
+        kind: TypeHint,
         label: "f64",
     },
     InlayHint {
         range: [580; 581),
-        kind: LetBindingType,
+        kind: TypeHint,
         label: "f64",
     },
 ]"#
@@ -283,12 +283,12 @@ fn main() {
         assert_debug_snapshot_matches!(analysis.inlay_hints(file_id).unwrap(), @r#"[
     InlayHint {
         range: [21; 30),
-        kind: LetBindingType,
+        kind: TypeHint,
         label: "i32",
     },
     InlayHint {
         range: [57; 66),
-        kind: ClosureParameterType,
+        kind: TypeHint,
         label: "i32",
     },
 ]"#
@@ -310,12 +310,12 @@ fn main() {
         assert_debug_snapshot_matches!(analysis.inlay_hints(file_id).unwrap(), @r#"[
     InlayHint {
         range: [21; 30),
-        kind: LetBindingType,
+        kind: TypeHint,
         label: "i32",
     },
     InlayHint {
         range: [44; 53),
-        kind: ForExpressionBindingType,
+        kind: TypeHint,
         label: "i32",
     },
 ]"#
@@ -356,27 +356,27 @@ fn main() {
         assert_debug_snapshot_matches!(analysis.inlay_hints(file_id).unwrap(), @r#"[
     InlayHint {
         range: [166; 170),
-        kind: LetBindingType,
+        kind: TypeHint,
         label: "CustomOption<Test>",
     },
     InlayHint {
         range: [334; 338),
-        kind: IfExpressionType,
+        kind: TypeHint,
         label: "&Test",
     },
     InlayHint {
         range: [389; 390),
-        kind: IfExpressionType,
+        kind: TypeHint,
         label: "&CustomOption<u32>",
     },
     InlayHint {
         range: [392; 393),
-        kind: IfExpressionType,
+        kind: TypeHint,
         label: "&u8",
     },
     InlayHint {
         range: [531; 532),
-        kind: IfExpressionType,
+        kind: TypeHint,
         label: "&u32",
     },
 ]"#
@@ -417,7 +417,7 @@ fn main() {
         assert_debug_snapshot_matches!(analysis.inlay_hints(file_id).unwrap(), @r#"[
     InlayHint {
         range: [166; 170),
-        kind: LetBindingType,
+        kind: TypeHint,
         label: "CustomOption<Test>",
     },
 ]"#
@@ -457,23 +457,23 @@ fn main() {
 
         assert_debug_snapshot_matches!(analysis.inlay_hints(file_id).unwrap(), @r#"[
     InlayHint {
-        range: [312; 316),
-        kind: MatchArmType,
+        range: [311; 315),
+        kind: TypeHint,
         label: "Test",
     },
     InlayHint {
-        range: [359; 360),
-        kind: MatchArmType,
+        range: [358; 359),
+        kind: TypeHint,
         label: "CustomOption<u32>",
     },
     InlayHint {
-        range: [362; 363),
-        kind: MatchArmType,
+        range: [361; 362),
+        kind: TypeHint,
         label: "u8",
     },
     InlayHint {
-        range: [485; 486),
-        kind: MatchArmType,
+        range: [484; 485),
+        kind: TypeHint,
         label: "u32",
     },
 ]"#
-- 
cgit v1.2.3