mirror of
https://github.com/rust-lang/rust-analyzer
synced 2024-12-27 13:33:31 +00:00
Properly account for mutable references when postfix-completing consuming completions (e.g. call
)
This commit is contained in:
parent
6dad8c5528
commit
9274703ac4
1 changed files with 21 additions and 1 deletions
|
@ -302,9 +302,10 @@ fn include_references(initial_element: &ast::Expr) -> (ast::Expr, ast::Expr) {
|
||||||
while let Some(parent_ref_element) =
|
while let Some(parent_ref_element) =
|
||||||
resulting_element.syntax().parent().and_then(ast::RefExpr::cast)
|
resulting_element.syntax().parent().and_then(ast::RefExpr::cast)
|
||||||
{
|
{
|
||||||
|
let exclusive = parent_ref_element.mut_token().is_some();
|
||||||
resulting_element = ast::Expr::from(parent_ref_element);
|
resulting_element = ast::Expr::from(parent_ref_element);
|
||||||
|
|
||||||
new_element_opt = make::expr_ref(new_element_opt, false);
|
new_element_opt = make::expr_ref(new_element_opt, exclusive);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// If we do not find any ref expressions, restore
|
// If we do not find any ref expressions, restore
|
||||||
|
@ -855,4 +856,23 @@ fn test() {
|
||||||
expect![[r#""#]],
|
expect![[r#""#]],
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn mut_ref_consuming() {
|
||||||
|
check_edit(
|
||||||
|
"call",
|
||||||
|
r#"
|
||||||
|
fn main() {
|
||||||
|
let mut x = &mut 2;
|
||||||
|
&mut x.$0;
|
||||||
|
}
|
||||||
|
"#,
|
||||||
|
r#"
|
||||||
|
fn main() {
|
||||||
|
let mut x = &mut 2;
|
||||||
|
${1}(&mut x);
|
||||||
|
}
|
||||||
|
"#,
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue