File tree 5 files changed +15
-9
lines changed
5 files changed +15
-9
lines changed Original file line number Diff line number Diff line change @@ -404,6 +404,15 @@ impl GenericParamsCollector {
404
404
}
405
405
406
406
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
+
407
416
/// Iterator of type_or_consts field
408
417
pub fn iter (
409
418
& self ,
Original file line number Diff line number Diff line change @@ -526,7 +526,7 @@ impl Printer<'_> {
526
526
}
527
527
528
528
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 ( ) {
530
530
return ;
531
531
}
532
532
Original file line number Diff line number Diff line change @@ -644,8 +644,7 @@ pub fn is_dyn_method(
644
644
let ItemContainerId :: TraitId ( trait_id) = func. lookup ( db. upcast ( ) ) . container else {
645
645
return None ;
646
646
} ;
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 ( ) ;
649
648
let fn_params = fn_subst. len ( Interner ) - trait_params;
650
649
let trait_ref = TraitRef {
651
650
trait_id : to_chalk_trait_id ( trait_id) ,
@@ -687,8 +686,7 @@ pub(crate) fn lookup_impl_method_query(
687
686
let ItemContainerId :: TraitId ( trait_id) = func. lookup ( db. upcast ( ) ) . container else {
688
687
return ( func, fn_subst) ;
689
688
} ;
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 ( ) ;
692
690
let fn_params = fn_subst. len ( Interner ) - trait_params;
693
691
let trait_ref = TraitRef {
694
692
trait_id : to_chalk_trait_id ( trait_id) ,
Original file line number Diff line number Diff line change @@ -373,13 +373,13 @@ impl Generics {
373
373
/// Returns total number of generic parameters in scope, including those from parent.
374
374
pub ( crate ) fn len ( & self ) -> usize {
375
375
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 ( ) ;
377
377
parent + child
378
378
}
379
379
380
380
/// Returns numbers of generic parameters and lifetimes excluding those from parent.
381
381
pub ( crate ) fn len_self ( & self ) -> usize {
382
- self . params . type_or_consts . len ( ) + self . params . lifetimes . len ( )
382
+ self . params . len ( )
383
383
}
384
384
385
385
/// Returns number of generic parameter excluding those from parent
Original file line number Diff line number Diff line change @@ -1418,8 +1418,7 @@ impl Adt {
1418
1418
}
1419
1419
1420
1420
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 ( ) {
1423
1422
return Err ( LayoutError :: HasPlaceholder ) ;
1424
1423
}
1425
1424
let krate = self . krate ( db) . id ;
You can’t perform that action at this time.
0 commit comments