@@ -615,7 +615,7 @@ pub(crate) fn associated_ty_data_query(
615
615
let type_alias_data = db. type_alias_data ( type_alias) ;
616
616
let generic_params = generics ( db. upcast ( ) , type_alias. into ( ) ) ;
617
617
let resolver = hir_def:: resolver:: HasResolver :: resolver ( type_alias, db. upcast ( ) ) ;
618
- let ctx =
618
+ let mut ctx =
619
619
crate :: TyLoweringContext :: new ( db, & resolver, & type_alias_data. types_map , type_alias. into ( ) )
620
620
. with_type_param_mode ( crate :: lower:: ParamLoweringMode :: Variable ) ;
621
621
@@ -627,14 +627,16 @@ pub(crate) fn associated_ty_data_query(
627
627
. build ( ) ;
628
628
let self_ty = TyKind :: Alias ( AliasTy :: Projection ( pro_ty) ) . intern ( Interner ) ;
629
629
630
- let mut bounds: Vec < _ > = type_alias_data
631
- . bounds
632
- . iter ( )
633
- . flat_map ( |bound| ctx. lower_type_bound ( bound, self_ty. clone ( ) , false ) )
634
- . filter_map ( |pred| generic_predicate_to_inline_bound ( db, & pred, & self_ty) )
635
- . collect ( ) ;
630
+ let mut bounds = Vec :: new ( ) ;
631
+ for bound in & type_alias_data. bounds {
632
+ ctx. lower_type_bound ( bound, self_ty. clone ( ) , false ) . for_each ( |pred| {
633
+ if let Some ( pred) = generic_predicate_to_inline_bound ( db, & pred, & self_ty) {
634
+ bounds. push ( pred) ;
635
+ }
636
+ } ) ;
637
+ }
636
638
637
- if !ctx. unsized_types . borrow ( ) . contains ( & self_ty) {
639
+ if !ctx. unsized_types . contains ( & self_ty) {
638
640
let sized_trait = db
639
641
. lang_item ( resolver. krate ( ) , LangItem :: Sized )
640
642
. and_then ( |lang_item| lang_item. as_trait ( ) . map ( to_chalk_trait_id) ) ;
0 commit comments