mirror of
https://github.com/astral-sh/ruff.git
synced 2025-09-27 04:19:18 +00:00
![]() We now handle generic constructor methods on generic classes correctly: ```py class C[T]: def __init__[S](self, t: T, s: S): ... x = C(1, "str") ``` Here, constructing `C` requires us to infer a specialization for the generic contexts of `C` and `__init__` at the same time. At first I thought I would need to track the full stack of nested generic contexts here (since the `[S]` context is nested within the `[T]` context). But I think this is the only way that we might need to specialize more than one generic context at once — in all other cases, a containing generic context must be specialized before we get to a nested one, and so we can just special-case this. While we're here, we also construct the generic context for a generic function lazily, when its signature is accessed, instead of eagerly when inferring the function body. |
||
---|---|---|
.. | ||
resources | ||
src | ||
tests | ||
build.rs | ||
Cargo.toml | ||
mdtest.py | ||
mdtest.py.lock |