@@ -624,8 +624,7 @@ impl<'db> Type<'db> {
624
624
union
625
625
. elements ( db)
626
626
. iter ( )
627
- . map ( |elem| elem. call ( db, arg_types) )
628
- . collect :: < Box < [ CallOutcome < ' db > ] > > ( ) ,
627
+ . map ( |elem| elem. call ( db, arg_types) ) ,
629
628
) ,
630
629
631
630
// TODO: intersection types
@@ -664,7 +663,7 @@ impl<'db> Type<'db> {
664
663
if !dunder_iter_method. is_unbound ( ) {
665
664
let CallOutcome :: Callable {
666
665
return_ty : iterator_ty,
667
- } = dunder_iter_method. call ( db, & [ ] )
666
+ } = dunder_iter_method. call ( db, & [ self ] )
668
667
else {
669
668
return IterationOutcome :: NotIterable {
670
669
not_iterable_ty : self ,
@@ -673,7 +672,7 @@ impl<'db> Type<'db> {
673
672
674
673
let dunder_next_method = iterator_ty. to_meta_type ( db) . member ( db, "__next__" ) ;
675
674
return dunder_next_method
676
- . call ( db, & [ ] )
675
+ . call ( db, & [ self ] )
677
676
. return_ty ( db)
678
677
. map ( |element_ty| IterationOutcome :: Iterable { element_ty } )
679
678
. unwrap_or ( IterationOutcome :: NotIterable {
@@ -690,7 +689,7 @@ impl<'db> Type<'db> {
690
689
let dunder_get_item_method = iterable_meta_type. member ( db, "__getitem__" ) ;
691
690
692
691
dunder_get_item_method
693
- . call ( db, & [ ] )
692
+ . call ( db, & [ self , builtins_symbol_ty ( db , "int" ) . to_instance ( db ) ] )
694
693
. return_ty ( db)
695
694
. map ( |element_ty| IterationOutcome :: Iterable { element_ty } )
696
695
. unwrap_or ( IterationOutcome :: NotIterable {
@@ -840,11 +839,11 @@ impl<'db> CallOutcome<'db> {
840
839
/// Create a new `CallOutcome::Union` with given wrapped outcomes.
841
840
fn union (
842
841
called_ty : Type < ' db > ,
843
- outcomes : impl Into < Box < [ CallOutcome < ' db > ] > > ,
842
+ outcomes : impl IntoIterator < Item = CallOutcome < ' db > > ,
844
843
) -> CallOutcome < ' db > {
845
844
CallOutcome :: Union {
846
845
called_ty,
847
- outcomes : outcomes. into ( ) ,
846
+ outcomes : outcomes. into_iter ( ) . collect ( ) ,
848
847
}
849
848
}
850
849
0 commit comments