mirror of https://github.com/astral-sh/ruff
## Summary The code in the `Variable` branch of `VariableLengthTupleSpec::has_relation_to` made the incorrect assumption that if you zip two possibly-different-length iterators together and iterate over the resulting zip iterator, the original two iterators will only have their common elements consumed. But in fact, the zip iterator detects that it is done when it receives a `None` from one iterator and `Some()` element from the other iterator, which means that it consumes one additional element from the longer iterator. This meant that we failed to detect mismatched types on this extra consumed element, because we never compared it to the variable type of the other tuple. Use `zip_longest` from itertools as an alternative, which allows us to combine all the handling into just two `zip_longest`, one for prefixes and one for suffixes. Marking this PR internal since it fixes a bug in a commit that wasn't released yet. ## Test Plan Added mdtests that failed before this fix and pass after it. |
||
|---|---|---|
| .. | ||
| resources | ||
| src | ||
| tests | ||
| Cargo.toml | ||
| build.rs | ||
| mdtest.py | ||
| mdtest.py.lock | ||