ruff/crates/red_knot_python_semantic/resources/mdtest/binary
cake-monotone 270318c2e0
[red-knot] fix: improve type inference for binary ops on tuples (#16725)
## Summary

This PR includes minor improvements to binary operation inference,
specifically for tuple concatenation.

### Before

```py
reveal_type((1, 2) + (3, 4))  # revealed: @Todo(return type of decorated function)
# If TODO is ignored, the revealed type would be `tuple[1|2|3|4, ...]`
```

The `builtins.tuple` type stub defines `__add__`, but it appears to only
work for homogeneous tuples. However, I think this limitation is not
ideal for many use cases.

### After

```py
reveal_type((1, 2) + (3, 4))  # revealed: tuple[Literal[1], Literal[2], Literal[3], Literal[4]]
```

## Test Plan

### Added
- `mdtest/binary/tuples.md`

### Affected
- `mdtest/slots.md` (a test have been moved out of the `False-Negative`
block.)
2025-03-14 12:29:57 +01:00
..
booleans.md [red-knot] add special case for float/complex (#16166) 2025-02-14 12:24:10 -08:00
classes.md Don't special-case class instances in binary expression inference (#15161) 2025-01-06 13:50:20 -05:00
custom.md [red-knot] Add missing imports in mdtests (#15869) 2025-02-03 09:27:29 +00:00
instances.md [red-knot] detect invalid return type (#16540) 2025-03-12 01:58:59 +00:00
integers.md [red-knot] Attribute access and the descriptor protocol (#16416) 2025-03-07 22:03:28 +01:00
tuples.md [red-knot] fix: improve type inference for binary ops on tuples (#16725) 2025-03-14 12:29:57 +01:00
unions.md [red-knot] Binary operator inference for union types (#16601) 2025-03-12 08:21:54 +01:00