ruff/crates/ty_python_semantic
Shunsuke Shibayama 722f1a7d7a
[ty] fix stack overflow when comparing recursive `NamedTuple` types with `is_disjoint_from` (#20538)
## Summary

I found this bug while working on #20528.
The minimum reproducible code is:

```python
from __future__ import annotations

from typing import NamedTuple
from ty_extensions import is_disjoint_from, static_assert

class Path(NamedTuple):
    prev: Path | None
    key: str

static_assert(not is_disjoint_from(Path, Path))
```

A stack overflow occurs when a nominal instance type inherits from
`NamedTuple` and is defined recursively.
This PR fixes this bug.

## Test Plan

mdtest updated
2025-09-23 19:29:03 +02:00
..
resources [ty] fix stack overflow when comparing recursive `NamedTuple` types with `is_disjoint_from` (#20538) 2025-09-23 19:29:03 +02:00
src [ty] fix stack overflow when comparing recursive `NamedTuple` types with `is_disjoint_from` (#20538) 2025-09-23 19:29:03 +02:00
tests [ty] Track open files in the server (#19264) 2025-07-18 19:33:35 +05:30
Cargo.toml [ty] Avoid overcounting shared memory usage (#19773) 2025-08-06 15:32:02 -04:00
build.rs Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00
mdtest.py [ty] Faster iteration on mdtests (#20465) 2025-09-18 10:48:52 +00:00
mdtest.py.lock Rename Red Knot (#17820) 2025-05-03 19:49:15 +02:00