about summary refs log tree commit diff
diff options
context:
space:
mode:
authorDorian Scheidt <dorian.scheidt@gmail.com>2022-08-18 18:26:54 -0500
committerDorian Scheidt <dorian.scheidt@gmail.com>2022-08-18 18:26:54 -0500
commit2086c48cff23aff651c18636e8227993a85cd6ac (patch)
tree53b3d8873f2b79c1fd147d30ead88488fb35ca26
parente27af5fae3e44ebd2339c3dd3fcaa1e9b59de598 (diff)
downloadrust-2086c48cff23aff651c18636e8227993a85cd6ac.tar.gz
rust-2086c48cff23aff651c18636e8227993a85cd6ac.zip
Remove mut out params via assoc_fn_target_info
-rw-r--r--crates/ide-assists/src/handlers/generate_function.rs20
1 files changed, 16 insertions, 4 deletions
diff --git a/crates/ide-assists/src/handlers/generate_function.rs b/crates/ide-assists/src/handlers/generate_function.rs
index 2283805a305..adb5ec2b99d 100644
--- a/crates/ide-assists/src/handlers/generate_function.rs
+++ b/crates/ide-assists/src/handlers/generate_function.rs
@@ -92,8 +92,8 @@ fn fn_target_info(
     call: &CallExpr,
     fn_name: &str,
 ) -> Option<TargetInfo> {
-    let mut target_module = None;
-    let mut adt_name = None;
+    let target_module;
+    let adt_name = None;
     let (target, file, insert_offset) = match path.qualifier() {
         Some(qualifier) => match ctx.sema.resolve_path(&qualifier) {
             Some(hir::PathResolution::Def(hir::ModuleDef::Module(module))) => {
@@ -108,11 +108,11 @@ fn fn_target_info(
                     }
                 }
 
-                assoc_fn_target(ctx, call, adt, &mut target_module, fn_name, &mut adt_name)?
+                return assoc_fn_target_info(ctx, call, adt, fn_name);
             }
             Some(hir::PathResolution::SelfType(impl_)) => {
                 let adt = impl_.self_ty(ctx.db()).as_adt()?;
-                assoc_fn_target(ctx, call, adt, &mut target_module, fn_name, &mut adt_name)?
+                return assoc_fn_target_info(ctx, call, adt, fn_name);
             }
             _ => {
                 return None;
@@ -412,6 +412,18 @@ fn get_method_target(
     Some((target.clone(), get_insert_offset(&target)))
 }
 
+fn assoc_fn_target_info(
+    ctx: &AssistContext<'_>,
+    call: &CallExpr,
+    adt: hir::Adt,
+    fn_name: &str,
+) -> Option<TargetInfo> {
+    let mut target_module = None;
+    let mut adt_name = None;
+    let (target, file, insert_offset) =
+        assoc_fn_target(ctx, call, adt, &mut target_module, fn_name, &mut adt_name)?;
+    Some(TargetInfo { target_module, adt_name, target, file, insert_offset })
+}
 fn assoc_fn_target(
     ctx: &AssistContext<'_>,
     call: &CallExpr,