]> git.lizzy.rs Git - rust.git/blobdiff - crates/ide_assists/src/handlers/extract_variable.rs
additional test for a reference local (on top of mutable reference local)
[rust.git] / crates / ide_assists / src / handlers / extract_variable.rs
index 9e11e38d3d6b7fcd56dcc093d68827970e96c31b..b498d86fb461ab3cde9f05d98d3df582fe1ca977 100644 (file)
@@ -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 @@ fn do_thing(&self) {
 
 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();
 }"#,
         );