Skip to content

Commit 9d84142

Browse files
committed
Auto merge of #16974 - dfireBird:generic_params_refactor, r=lnicola
refactor: Implement len and is_empty method in generic_params
2 parents a8b7acf + 69c4ac6 commit 9d84142

File tree

5 files changed

+15
-9
lines changed

5 files changed

+15
-9
lines changed

crates/hir-def/src/generics.rs

+9
Original file line numberDiff line numberDiff line change
@@ -404,6 +404,15 @@ impl GenericParamsCollector {
404404
}
405405

406406
impl GenericParams {
407+
/// Number of Generic parameters (type_or_consts + lifetimes)
408+
pub fn len(&self) -> usize {
409+
self.type_or_consts.len() + self.lifetimes.len()
410+
}
411+
412+
pub fn is_empty(&self) -> bool {
413+
self.len() == 0
414+
}
415+
407416
/// Iterator of type_or_consts field
408417
pub fn iter(
409418
&self,

crates/hir-def/src/item_tree/pretty.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -526,7 +526,7 @@ impl Printer<'_> {
526526
}
527527

528528
fn print_generic_params(&mut self, params: &GenericParams) {
529-
if params.type_or_consts.is_empty() && params.lifetimes.is_empty() {
529+
if params.is_empty() {
530530
return;
531531
}
532532

crates/hir-ty/src/method_resolution.rs

+2-4
Original file line numberDiff line numberDiff line change
@@ -644,8 +644,7 @@ pub fn is_dyn_method(
644644
let ItemContainerId::TraitId(trait_id) = func.lookup(db.upcast()).container else {
645645
return None;
646646
};
647-
let generic_params = db.generic_params(trait_id.into());
648-
let trait_params = generic_params.type_or_consts.len() + generic_params.lifetimes.len();
647+
let trait_params = db.generic_params(trait_id.into()).len();
649648
let fn_params = fn_subst.len(Interner) - trait_params;
650649
let trait_ref = TraitRef {
651650
trait_id: to_chalk_trait_id(trait_id),
@@ -687,8 +686,7 @@ pub(crate) fn lookup_impl_method_query(
687686
let ItemContainerId::TraitId(trait_id) = func.lookup(db.upcast()).container else {
688687
return (func, fn_subst);
689688
};
690-
let generic_params = db.generic_params(trait_id.into());
691-
let trait_params = generic_params.type_or_consts.len() + generic_params.lifetimes.len();
689+
let trait_params = db.generic_params(trait_id.into()).len();
692690
let fn_params = fn_subst.len(Interner) - trait_params;
693691
let trait_ref = TraitRef {
694692
trait_id: to_chalk_trait_id(trait_id),

crates/hir-ty/src/utils.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -373,13 +373,13 @@ impl Generics {
373373
/// Returns total number of generic parameters in scope, including those from parent.
374374
pub(crate) fn len(&self) -> usize {
375375
let parent = self.parent_generics().map_or(0, Generics::len);
376-
let child = self.params.type_or_consts.len() + self.params.lifetimes.len();
376+
let child = self.params.len();
377377
parent + child
378378
}
379379

380380
/// Returns numbers of generic parameters and lifetimes excluding those from parent.
381381
pub(crate) fn len_self(&self) -> usize {
382-
self.params.type_or_consts.len() + self.params.lifetimes.len()
382+
self.params.len()
383383
}
384384

385385
/// Returns number of generic parameter excluding those from parent

crates/hir/src/lib.rs

+1-2
Original file line numberDiff line numberDiff line change
@@ -1418,8 +1418,7 @@ impl Adt {
14181418
}
14191419

14201420
pub fn layout(self, db: &dyn HirDatabase) -> Result<Layout, LayoutError> {
1421-
let generic_params = &db.generic_params(self.into());
1422-
if generic_params.iter().next().is_some() || generic_params.iter_lt().next().is_some() {
1421+
if !db.generic_params(self.into()).is_empty() {
14231422
return Err(LayoutError::HasPlaceholder);
14241423
}
14251424
let krate = self.krate(db).id;

0 commit comments

Comments
 (0)