about summary refs log tree commit diff
diff options
context:
space:
mode:
authorJeroen Vannevel <jer_vannevel@outlook.com>2022-01-05 01:36:04 +0000
committerJeroen Vannevel <jer_vannevel@outlook.com>2022-01-05 01:36:04 +0000
commitfa0afb957671b75bcbcc8fd8ebfdbcaf088ee2bf (patch)
tree27337b4ceab3f4a072051dc1661ce82ad7258dde
parent4c1a1b2570e5d60b49259bea261f7db16ceb627a (diff)
downloadrust-fa0afb957671b75bcbcc8fd8ebfdbcaf088ee2bf.tar.gz
rust-fa0afb957671b75bcbcc8fd8ebfdbcaf088ee2bf.zip
additional test for a reference local (on top of mutable reference local)
-rw-r--r--crates/ide_assists/src/handlers/extract_variable.rs70
1 files changed, 68 insertions, 2 deletions
diff --git a/crates/ide_assists/src/handlers/extract_variable.rs b/crates/ide_assists/src/handlers/extract_variable.rs
index 9e11e38d3d6..b498d86fb46 100644
--- a/crates/ide_assists/src/handlers/extract_variable.rs
+++ b/crates/ide_assists/src/handlers/extract_variable.rs
@@ -1139,7 +1139,7 @@ fn foo(s: S) {
     }
 
     #[test]
-    fn test_extract_var_reference_local() {
+    fn test_extract_var_mutable_reference_local() {
         check_assist(
             extract_variable,
             r#"
@@ -1198,7 +1198,73 @@ impl X {
 
 fn foo() {
     let local = &mut S::new();
-    let $0x = local.sub;
+    let $0x = &mut local.sub;
+    x.do_thing();
+}"#,
+        );
+    }
+
+    #[test]
+    fn test_extract_var_reference_local() {
+        check_assist(
+            extract_variable,
+            r#"
+struct X;
+
+struct S {
+    sub: X
+}
+
+impl S {
+    fn new() -> S {
+        S { 
+            sub: X::new()
+        }
+    }
+}
+
+impl X {
+    fn new() -> X {
+        X { }
+    }
+    fn do_thing(&self) {
+
+    }
+}
+
+
+fn foo() {
+    let local = &S::new();
+    $0local.sub$0.do_thing();
+}"#,
+            r#"
+struct X;
+
+struct S {
+    sub: X
+}
+
+impl S {
+    fn new() -> S {
+        S { 
+            sub: X::new()
+        }
+    }
+}
+
+impl X {
+    fn new() -> X {
+        X { }
+    }
+    fn do_thing(&self) {
+
+    }
+}
+
+
+fn foo() {
+    let local = &S::new();
+    let $0x = &local.sub;
     x.do_thing();
 }"#,
         );