Unnamed repository; edit this file 'description' to name the repository.
-rw-r--r--crates/hir/src/semantics.rs21
-rw-r--r--crates/ide-completion/src/completions/expr.rs3
-rw-r--r--crates/ide-completion/src/completions/type.rs3
3 files changed, 13 insertions, 14 deletions
diff --git a/crates/hir/src/semantics.rs b/crates/hir/src/semantics.rs
index b43165fd8a..6af0c2c3c5 100644
--- a/crates/hir/src/semantics.rs
+++ b/crates/hir/src/semantics.rs
@@ -2288,18 +2288,19 @@ impl<'db> SemanticsScope<'db> {
/// Iterates over associated types that may be specified after the given path (using
/// `Ty::Assoc` syntax).
- pub fn assoc_type_shorthand_candidates<R>(
+ pub fn assoc_type_shorthand_candidates(
&self,
resolution: &PathResolution,
- mut cb: impl FnMut(&Name, TypeAlias) -> Option<R>,
- ) -> Option<R> {
- let def = self.resolver.generic_def()?;
- hir_ty::associated_type_shorthand_candidates(
- self.db,
- def,
- resolution.in_type_ns()?,
- |name, id| cb(name, id.into()),
- )
+ mut cb: impl FnMut(TypeAlias),
+ ) {
+ let (Some(def), Some(resolution)) = (self.resolver.generic_def(), resolution.in_type_ns())
+ else {
+ return;
+ };
+ hir_ty::associated_type_shorthand_candidates(self.db, def, resolution, |_, id| {
+ cb(id.into());
+ None::<()>
+ });
}
pub fn generic_def(&self) -> Option<crate::GenericDef> {
diff --git a/crates/ide-completion/src/completions/expr.rs b/crates/ide-completion/src/completions/expr.rs
index a84927f6e2..1972f16613 100644
--- a/crates/ide-completion/src/completions/expr.rs
+++ b/crates/ide-completion/src/completions/expr.rs
@@ -140,9 +140,8 @@ pub(crate) fn complete_expr_path(
Qualified::With { resolution: None, .. } => {}
Qualified::With { resolution: Some(resolution), .. } => {
// Add associated types on type parameters and `Self`.
- ctx.scope.assoc_type_shorthand_candidates(resolution, |_, alias| {
+ ctx.scope.assoc_type_shorthand_candidates(resolution, |alias| {
acc.add_type_alias(ctx, alias);
- None::<()>
});
match resolution {
hir::PathResolution::Def(hir::ModuleDef::Module(module)) => {
diff --git a/crates/ide-completion/src/completions/type.rs b/crates/ide-completion/src/completions/type.rs
index fc27cbd65a..3112462cda 100644
--- a/crates/ide-completion/src/completions/type.rs
+++ b/crates/ide-completion/src/completions/type.rs
@@ -77,9 +77,8 @@ pub(crate) fn complete_type_path(
Qualified::With { resolution: None, .. } => {}
Qualified::With { resolution: Some(resolution), .. } => {
// Add associated types on type parameters and `Self`.
- ctx.scope.assoc_type_shorthand_candidates(resolution, |_, alias| {
+ ctx.scope.assoc_type_shorthand_candidates(resolution, |alias| {
acc.add_type_alias(ctx, alias);
- None::<()>
});
match resolution {