[ty] Fix accidental Liskov violation in protocol tests (#20763)

## Summary

We have the following test in `protocols.md`:
```py
class HasX(Protocol):
    x: int

# […]

class Foo:
    x: int

# […]

class FooBool(Foo):
    x: bool

static_assert(not is_subtype_of(FooBool, HasX))
static_assert(not is_assignable_to(FooBool, HasX))
```

If `Foo` was indeed intended to be a base class of `FooBool`, then `x:
bool` should be reported as a Liskov violation. And then it's a matter
of definition whether or not these assertions should hold true or not
(should the incorrect override take precedence or not?). So it looks to
me like this is just an oversight, probably a copy-paste error from
another test right before it, where `FooSub` is indeed intended to be a
subclass of `Foo`.

I am fixing this because this test started to fail on a branch of mine
that changes how attribute lookup in inheritance chains works.
This commit is contained in:
David Peter 2025-10-08 14:04:37 +02:00 committed by GitHub
parent db80febb6b
commit 6b94e620fe
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -630,7 +630,7 @@ static_assert(is_assignable_to(FooSub, HasX))
static_assert(not is_subtype_of(FooSub, HasXY))
static_assert(not is_assignable_to(FooSub, HasXY))
class FooBool(Foo):
class FooBool:
x: bool
static_assert(not is_subtype_of(FooBool, HasX))