Skip to content

Commit 57c4ee2

Browse files
committed
Auto merge of rust-lang#14578 - lnicola:simplify-method-res, r=lnicola
minor: Make inherent_impls_in_block and trait_impls_in_block infallible Fixes rust-lang/rust-analyzer#14574 (comment)
2 parents 9640742 + febd506 commit 57c4ee2

File tree

3 files changed

+22
-27
lines changed

3 files changed

+22
-27
lines changed

crates/hir-ty/src/chalk_db.rs

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -139,7 +139,7 @@ impl<'a> chalk_solve::RustIrDatabase<Interner> for ChalkContext<'a> {
139139
}
140140
});
141141
})
142-
.filter_map(|block_id| self.db.trait_impls_in_block(block_id));
142+
.map(|block_id| self.db.trait_impls_in_block(block_id));
143143

144144
let id_to_chalk = |id: hir_def::ImplId| id.to_chalk(self.db);
145145
let mut result = vec![];
@@ -152,7 +152,8 @@ impl<'a> chalk_solve::RustIrDatabase<Interner> for ChalkContext<'a> {
152152
impl_maps.into_iter().chain(block_impls).for_each(&mut f);
153153
def_blocks
154154
.into_iter()
155-
.filter_map(|it| self.db.trait_impls_in_block(it?))
155+
.flatten()
156+
.map(|it| self.db.trait_impls_in_block(it))
156157
.for_each(f);
157158
}
158159
fps => {
@@ -165,7 +166,8 @@ impl<'a> chalk_solve::RustIrDatabase<Interner> for ChalkContext<'a> {
165166
impl_maps.into_iter().chain(block_impls).for_each(&mut f);
166167
def_blocks
167168
.into_iter()
168-
.filter_map(|it| self.db.trait_impls_in_block(it?))
169+
.flatten()
170+
.map(|it| self.db.trait_impls_in_block(it))
169171
.for_each(f);
170172
}
171173
}

crates/hir-ty/src/db.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,7 @@ pub trait HirDatabase: DefDatabase + Upcast<dyn DefDatabase> {
115115
fn inherent_impls_in_crate(&self, krate: CrateId) -> Arc<InherentImpls>;
116116

117117
#[salsa::invoke(InherentImpls::inherent_impls_in_block_query)]
118-
fn inherent_impls_in_block(&self, block: BlockId) -> Option<Arc<InherentImpls>>;
118+
fn inherent_impls_in_block(&self, block: BlockId) -> Arc<InherentImpls>;
119119

120120
/// Collects all crates in the dependency graph that have impls for the
121121
/// given fingerprint. This is only used for primitive types and types
@@ -132,7 +132,7 @@ pub trait HirDatabase: DefDatabase + Upcast<dyn DefDatabase> {
132132
fn trait_impls_in_crate(&self, krate: CrateId) -> Arc<TraitImpls>;
133133

134134
#[salsa::invoke(TraitImpls::trait_impls_in_block_query)]
135-
fn trait_impls_in_block(&self, block: BlockId) -> Option<Arc<TraitImpls>>;
135+
fn trait_impls_in_block(&self, block: BlockId) -> Arc<TraitImpls>;
136136

137137
#[salsa::invoke(TraitImpls::trait_impls_in_deps_query)]
138138
fn trait_impls_in_deps(&self, krate: CrateId) -> Arc<TraitImpls>;

crates/hir-ty/src/method_resolution.rs

Lines changed: 15 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -149,18 +149,15 @@ impl TraitImpls {
149149
Arc::new(impls)
150150
}
151151

152-
pub(crate) fn trait_impls_in_block_query(
153-
db: &dyn HirDatabase,
154-
block: BlockId,
155-
) -> Option<Arc<Self>> {
152+
pub(crate) fn trait_impls_in_block_query(db: &dyn HirDatabase, block: BlockId) -> Arc<Self> {
156153
let _p = profile::span("trait_impls_in_block_query");
157154
let mut impls = Self { map: FxHashMap::default() };
158155

159156
let block_def_map = db.block_def_map(block);
160157
impls.collect_def_map(db, &block_def_map);
161158
impls.shrink_to_fit();
162159

163-
Some(Arc::new(impls))
160+
Arc::new(impls)
164161
}
165162

166163
pub(crate) fn trait_impls_in_deps_query(db: &dyn HirDatabase, krate: CrateId) -> Arc<Self> {
@@ -283,18 +280,15 @@ impl InherentImpls {
283280
Arc::new(impls)
284281
}
285282

286-
pub(crate) fn inherent_impls_in_block_query(
287-
db: &dyn HirDatabase,
288-
block: BlockId,
289-
) -> Option<Arc<Self>> {
283+
pub(crate) fn inherent_impls_in_block_query(db: &dyn HirDatabase, block: BlockId) -> Arc<Self> {
290284
let _p = profile::span("inherent_impls_in_block_query");
291285
let mut impls = Self { map: FxHashMap::default(), invalid_impls: Vec::default() };
292286

293287
let block_def_map = db.block_def_map(block);
294288
impls.collect_def_map(db, &block_def_map);
295289
impls.shrink_to_fit();
296290

297-
Some(Arc::new(impls))
291+
Arc::new(impls)
298292
}
299293

300294
fn shrink_to_fit(&mut self) {
@@ -1178,18 +1172,17 @@ fn iterate_inherent_methods(
11781172
};
11791173

11801174
while let Some(block_id) = block {
1181-
if let Some(impls) = db.inherent_impls_in_block(block_id) {
1182-
impls_for_self_ty(
1183-
&impls,
1184-
self_ty,
1185-
table,
1186-
name,
1187-
receiver_ty,
1188-
receiver_adjustments.clone(),
1189-
module,
1190-
callback,
1191-
)?;
1192-
}
1175+
let impls = db.inherent_impls_in_block(block_id);
1176+
impls_for_self_ty(
1177+
&impls,
1178+
self_ty,
1179+
table,
1180+
name,
1181+
receiver_ty,
1182+
receiver_adjustments.clone(),
1183+
module,
1184+
callback,
1185+
)?;
11931186

11941187
block = db.block_def_map(block_id).parent().and_then(|module| module.containing_block());
11951188
}

0 commit comments

Comments
 (0)