[ty] Fix false positives when subscripting an object inferred as having an Intersection type (#18920)

This commit is contained in:
Alex Waygood
2025-06-24 19:39:02 +01:00
committed by GitHub
parent 3220242dec
commit e44c489273
3 changed files with 52 additions and 18 deletions

View File

@@ -84,3 +84,21 @@ def _(flag: bool):
reveal_type(a) # revealed: str | Unknown
```
## Intersection of nominal-instance types
If a subscript operation could succeed for *any* positive element of an intersection, no diagnostic
should be reported even if it would not succeed for some other element of the intersection.
```py
class Foo: ...
class Bar:
def __getitem__(self, key: str) -> int:
return 42
def f(x: Foo):
if isinstance(x, Bar):
# TODO: should be `int`
reveal_type(x["whatever"]) # revealed: @Todo(Subscript expressions on intersections)
```