From: Wang Ruochen Date: Thu, 6 Jan 2022 19:45:09 +0000 (-0800) Subject: Correct has_ref detection X-Git-Url: https://git.lizzy.rs/?a=commitdiff_plain;h=3a57f700d883de83a97cd28d803d12ce26647bfa;p=rust.git Correct has_ref detection --- diff --git a/crates/ide_completion/src/context.rs b/crates/ide_completion/src/context.rs index c6af285e86c..a21de23d1d7 100644 --- a/crates/ide_completion/src/context.rs +++ b/crates/ide_completion/src/context.rs @@ -876,7 +876,7 @@ fn path_or_use_tree_qualifier(path: &ast::Path) -> Option<(ast::Path, bool)> { fn has_ref(token: &SyntaxToken) -> bool { let mut token = token.clone(); - for skip in [WHITESPACE, IDENT, T![mut]] { + for skip in [IDENT, WHITESPACE, T![mut]] { if token.kind() == skip { token = match token.prev_token() { Some(it) => it, @@ -992,6 +992,20 @@ fn bar(x: &u32) {} r#" fn foo() { bar(&mut $0); } fn bar(x: &mut u32) {} +"#, + expect![[r#"ty: u32, name: x"#]], + ); + check_expected_type_and_name( + r#" +fn foo() { bar(& c$0); } +fn bar(x: &u32) {} + "#, + expect![[r#"ty: u32, name: x"#]], + ); + check_expected_type_and_name( + r#" +fn foo() { bar(&mut c$0); } +fn bar(x: &mut u32) {} "#, expect![[r#"ty: u32, name: x"#]], ); diff --git a/crates/ide_completion/src/render.rs b/crates/ide_completion/src/render.rs index 4b4fbb3ed9e..d7184e406eb 100644 --- a/crates/ide_completion/src/render.rs +++ b/crates/ide_completion/src/render.rs @@ -1156,6 +1156,22 @@ fn main() [] fn foo(…) [] "#]], ); + check_relevance( + r#" +struct S; +fn foo(s: &mut S) {} +fn main() { + let mut ssss = S; + foo(&mut s$0); +} + "#, + expect![[r#" + lc ssss [type+local] + st S [] + fn main() [] + fn foo(…) [] + "#]], + ); } #[test]