Skip to content

Commit e611fbe

Browse files
committed
Auto merge of rust-lang#14355 - Veykril:completion-ref-strip, r=Veykril
fix: Fix reference completions being emitted in places other than argument lists Fixes rust-lang/rust-analyzer#14331
2 parents 1a31896 + 82ed68c commit e611fbe

File tree

2 files changed

+16
-5
lines changed

2 files changed

+16
-5
lines changed

crates/ide-completion/src/context/analysis.rs

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -353,7 +353,7 @@ fn expected_type_and_name(
353353
_ => ty,
354354
};
355355

356-
loop {
356+
let (ty, name) = loop {
357357
break match_ast! {
358358
match node {
359359
ast::LetStmt(it) => {
@@ -385,9 +385,7 @@ fn expected_type_and_name(
385385
token.clone(),
386386
).map(|ap| {
387387
let name = ap.ident().map(NameOrNameRef::Name);
388-
389-
let ty = strip_refs(ap.ty);
390-
(Some(ty), name)
388+
(Some(ap.ty), name)
391389
})
392390
.unwrap_or((None, None))
393391
},
@@ -489,7 +487,8 @@ fn expected_type_and_name(
489487
},
490488
}
491489
};
492-
}
490+
};
491+
(ty.map(strip_refs), name)
493492
}
494493

495494
fn classify_lifetime(

crates/ide-completion/src/context/tests.rs

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -411,3 +411,15 @@ fn main() {
411411
expect!["ty: i32, name: ?"],
412412
);
413413
}
414+
415+
#[test]
416+
fn expected_type_ref_return_pos() {
417+
check_expected_type_and_name(
418+
r#"
419+
fn f(thing: u32) -> &u32 {
420+
&thin$0
421+
}
422+
"#,
423+
expect!["ty: u32, name: ?"],
424+
);
425+
}

0 commit comments

Comments
 (0)