@@ -615,7 +615,7 @@ pub(crate) fn associated_ty_data_query(
615615 let type_alias_data = db. type_alias_data ( type_alias) ;
616616 let generic_params = generics ( db. upcast ( ) , type_alias. into ( ) ) ;
617617 let resolver = hir_def:: resolver:: HasResolver :: resolver ( type_alias, db. upcast ( ) ) ;
618- let ctx =
618+ let mut ctx =
619619 crate :: TyLoweringContext :: new ( db, & resolver, & type_alias_data. types_map , type_alias. into ( ) )
620620 . with_type_param_mode ( crate :: lower:: ParamLoweringMode :: Variable ) ;
621621
@@ -627,14 +627,16 @@ pub(crate) fn associated_ty_data_query(
627627 . build ( ) ;
628628 let self_ty = TyKind :: Alias ( AliasTy :: Projection ( pro_ty) ) . intern ( Interner ) ;
629629
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+ }
636638
637- if !ctx. unsized_types . borrow ( ) . contains ( & self_ty) {
639+ if !ctx. unsized_types . contains ( & self_ty) {
638640 let sized_trait = db
639641 . lang_item ( resolver. krate ( ) , LangItem :: Sized )
640642 . and_then ( |lang_item| lang_item. as_trait ( ) . map ( to_chalk_trait_id) ) ;
0 commit comments