mirror of https://github.com/astral-sh/ruff
Handle PEP 613 aliases as well
This commit is contained in:
parent
f40ab81093
commit
343c6b6287
|
|
@ -96,6 +96,24 @@ def _(x: MyAlias):
|
||||||
reveal_type(x) # revealed: int | ((str, /) -> int)
|
reveal_type(x) # revealed: int | ((str, /) -> int)
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## Generic aliases
|
||||||
|
|
||||||
|
```py
|
||||||
|
from typing import TypeAlias, TypeVar
|
||||||
|
|
||||||
|
T = TypeVar("T")
|
||||||
|
|
||||||
|
MyList: TypeAlias = list[T]
|
||||||
|
ListOrSet: TypeAlias = list[T] | set[T]
|
||||||
|
|
||||||
|
reveal_type(MyList) # revealed: <class 'list[T]'>
|
||||||
|
reveal_type(ListOrSet) # revealed: types.UnionType
|
||||||
|
|
||||||
|
def _(list_of_int: MyList[int], list_or_set_of_str: ListOrSet[str]):
|
||||||
|
reveal_type(list_of_int) # revealed: list[int]
|
||||||
|
reveal_type(list_or_set_of_str) # revealed: list[str] | set[str]
|
||||||
|
```
|
||||||
|
|
||||||
## Subscripted generic alias in union
|
## Subscripted generic alias in union
|
||||||
|
|
||||||
```py
|
```py
|
||||||
|
|
|
||||||
|
|
@ -5531,11 +5531,16 @@ impl<'db, 'ast> TypeInferenceBuilder<'db, 'ast> {
|
||||||
self.deferred_state = DeferredExpressionState::Deferred;
|
self.deferred_state = DeferredExpressionState::Deferred;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
let previous_typevar_binding_context = self.typevar_binding_context;
|
||||||
|
self.typevar_binding_context = Some(definition);
|
||||||
|
|
||||||
let inferred_ty = self.infer_maybe_standalone_expression(
|
let inferred_ty = self.infer_maybe_standalone_expression(
|
||||||
value,
|
value,
|
||||||
TypeContext::new(Some(declared.inner_type())),
|
TypeContext::new(Some(declared.inner_type())),
|
||||||
);
|
);
|
||||||
|
|
||||||
|
self.typevar_binding_context = previous_typevar_binding_context;
|
||||||
|
|
||||||
self.deferred_state = previous_deferred_state;
|
self.deferred_state = previous_deferred_state;
|
||||||
|
|
||||||
self.dataclass_field_specifiers.clear();
|
self.dataclass_field_specifiers.clear();
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue