Skip to content

Commit cd5ad4e

Browse files
committed
Don't include a ref if none was declared
1 parent 817f478 commit cd5ad4e

File tree

1 file changed

+49
-3
lines changed

1 file changed

+49
-3
lines changed

crates/ide_assists/src/handlers/extract_variable.rs

Lines changed: 49 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,13 @@ pub(crate) fn extract_variable(acc: &mut Assists, ctx: &AssistContext) -> Option
5353
}
5454

5555
let ref_kind: RefKind = if let Some(receiver_type) = get_receiver_type(&ctx, &to_extract) {
56-
if receiver_type.is_mutable_reference() { RefKind::MutRef } else { RefKind::Ref }
56+
if receiver_type.is_mutable_reference() {
57+
RefKind::MutRef
58+
} else if receiver_type.is_reference() {
59+
RefKind::Ref
60+
} else {
61+
RefKind::None
62+
}
5763
} else {
5864
RefKind::None
5965
};
@@ -86,7 +92,7 @@ pub(crate) fn extract_variable(acc: &mut Assists, ctx: &AssistContext) -> Option
8692
let reference_modifier = match ref_kind {
8793
RefKind::MutRef => "&mut ",
8894
RefKind::Ref => "&",
89-
RefKind::None => ""
95+
RefKind::None => "",
9096
};
9197

9298
match anchor {
@@ -180,7 +186,7 @@ fn get_receiver(expression: ast::Expr) -> Option<ast::Expr> {
180186
enum RefKind {
181187
Ref,
182188
MutRef,
183-
None
189+
None,
184190
}
185191

186192
#[derive(Debug)]
@@ -1088,6 +1094,46 @@ struct S {
10881094
fn foo(s: &S) {
10891095
let $0z = &s.sub.field.field;
10901096
z.do_thing();
1097+
}"#,
1098+
);
1099+
}
1100+
1101+
#[test]
1102+
fn test_extract_var_regular_parameter() {
1103+
check_assist(
1104+
extract_variable,
1105+
r#"
1106+
struct X;
1107+
1108+
impl X {
1109+
fn do_thing(&self) {
1110+
1111+
}
1112+
}
1113+
1114+
struct S {
1115+
sub: X
1116+
}
1117+
1118+
fn foo(s: S) {
1119+
$0s.sub$0.do_thing();
1120+
}"#,
1121+
r#"
1122+
struct X;
1123+
1124+
impl X {
1125+
fn do_thing(&self) {
1126+
1127+
}
1128+
}
1129+
1130+
struct S {
1131+
sub: X
1132+
}
1133+
1134+
fn foo(s: S) {
1135+
let $0x = s.sub;
1136+
x.do_thing();
10911137
}"#,
10921138
);
10931139
}

0 commit comments

Comments
 (0)