mirror of
https://github.com/astral-sh/ruff.git
synced 2025-08-04 10:48:32 +00:00
[ty] Intersect with a dynamic type when calculating the metaclass of a class if that class has a dynamic type in its MRO
This commit is contained in:
parent
08d8819c8a
commit
2d04d99315
6 changed files with 35 additions and 13 deletions
|
@ -158,15 +158,13 @@ from nonexistent_module import UnknownClass # error: [unresolved-import]
|
|||
|
||||
class C(UnknownClass): ...
|
||||
|
||||
# TODO: should be `type[type] & Unknown`
|
||||
reveal_type(C.__class__) # revealed: <class 'type'>
|
||||
reveal_type(C.__class__) # revealed: type[type] & Unknown
|
||||
|
||||
class M(type): ...
|
||||
class A(metaclass=M): ...
|
||||
class B(A, UnknownClass): ...
|
||||
|
||||
# TODO: should be `type[M] & Unknown`
|
||||
reveal_type(B.__class__) # revealed: <class 'M'>
|
||||
reveal_type(B.__class__) # revealed: type[M] & Unknown
|
||||
```
|
||||
|
||||
## Duplicate
|
||||
|
@ -176,7 +174,7 @@ class M(type): ...
|
|||
class A(metaclass=M): ...
|
||||
class B(A, A): ... # error: [duplicate-base] "Duplicate base class `A`"
|
||||
|
||||
reveal_type(B.__class__) # revealed: <class 'M'>
|
||||
reveal_type(B.__class__) # revealed: type[M] & Unknown
|
||||
```
|
||||
|
||||
## Non-class
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue