mirror of
https://github.com/astral-sh/ruff.git
synced 2025-09-29 05:15:12 +00:00
[red-knot] Fix bug where union of two iterable types was not recognised as iterable (#13992)
This commit is contained in:
parent
1607d88c22
commit
42c70697d8
2 changed files with 81 additions and 5 deletions
|
@ -1104,10 +1104,7 @@ impl<'db> Type<'db> {
|
|||
|
||||
let dunder_iter_method = iterable_meta_type.member(db, "__iter__");
|
||||
if !dunder_iter_method.is_unbound() {
|
||||
let CallOutcome::Callable {
|
||||
return_ty: iterator_ty,
|
||||
} = dunder_iter_method.call(db, &[self])
|
||||
else {
|
||||
let Some(iterator_ty) = dunder_iter_method.call(db, &[self]).return_ty(db) else {
|
||||
return IterationOutcome::NotIterable {
|
||||
not_iterable_ty: self,
|
||||
};
|
||||
|
@ -1115,7 +1112,7 @@ impl<'db> Type<'db> {
|
|||
|
||||
let dunder_next_method = iterator_ty.to_meta_type(db).member(db, "__next__");
|
||||
return dunder_next_method
|
||||
.call(db, &[self])
|
||||
.call(db, &[iterator_ty])
|
||||
.return_ty(db)
|
||||
.map(|element_ty| IterationOutcome::Iterable { element_ty })
|
||||
.unwrap_or(IterationOutcome::NotIterable {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue