Shunsuke Shibayama
08a561fc05
[ty] more precise lazy scope place lookup ( #19932 )
...
## Summary
This is a follow-up to https://github.com/astral-sh/ruff/pull/19321 .
Now lazy snapshots are updated to take into account new bindings on
every symbol reassignment.
```python
def outer(x: A | None):
if x is None:
x = A()
reveal_type(x) # revealed: A
def inner() -> None:
# lazy snapshot: {x: A}
reveal_type(x) # revealed: A
inner()
def outer() -> None:
x = None
x = 1
def inner() -> None:
# lazy snapshot: {x: Literal[1]} -> {x: Literal[1, 2]}
reveal_type(x) # revealed: Literal[1, 2]
inner()
x = 2
```
Closes astral-sh/ty#559 .
## Test Plan
Some TODOs in `public_types.md` now work properly.
---------
Co-authored-by: Carl Meyer <carl@astral.sh >
2025-09-08 21:08:35 +00:00
..
2025-09-08 13:04:37 +01:00
2025-08-27 13:21:47 +01:00
2025-07-31 11:28:03 +01:00
2025-05-17 08:27:32 -04:00
2025-05-06 20:11:25 -04:00
2025-09-05 17:56:06 +01:00
2025-08-14 22:14:31 +01:00
2025-07-15 21:31:53 +02:00
2025-07-30 17:40:24 +02:00
2025-08-04 20:13:50 +02:00
2025-09-07 18:25:35 +01:00
2025-06-26 14:29:33 +02:00
2025-08-29 19:48:45 +01:00
2025-08-27 13:21:47 +01:00
2025-05-09 13:40:51 -04:00
2025-08-11 15:29:58 -04:00
2025-07-30 11:51:21 +02:00
2025-08-29 08:44:18 +00:00
2025-09-08 13:26:21 -07:00
2025-08-05 13:59:10 +02:00
2025-08-27 13:21:47 +01:00
2025-08-27 13:21:47 +01:00
2025-08-22 19:33:08 +01:00
2025-09-08 21:08:35 +00:00
2025-05-03 19:49:15 +02:00
2025-08-13 15:51:59 -07:00
2025-05-03 19:49:15 +02:00
2025-09-05 12:38:37 +02:00
2025-05-22 21:37:03 -04:00
2025-09-01 11:22:19 +02:00
2025-07-22 16:10:38 +02:00
2025-08-27 13:21:47 +01:00
2025-07-31 19:45:01 +01:00
2025-09-07 18:25:35 +01:00
2025-08-29 19:48:45 +01:00
2025-05-06 20:11:25 -04:00
2025-08-05 07:41:37 -07:00
2025-05-03 19:49:15 +02:00
2025-07-30 11:51:21 +02:00
2025-08-29 19:48:45 +01:00
2025-08-29 16:19:45 -07:00
2025-05-13 21:27:48 +00:00
2025-05-09 13:40:51 -04:00
2025-08-27 13:21:47 +01:00
2025-07-22 16:10:38 +02:00
2025-08-29 13:22:23 +00:00
2025-08-18 19:45:44 +02:00
2025-09-04 15:28:33 -07:00
2025-05-03 19:49:15 +02:00
2025-09-07 18:25:35 +01:00
2025-07-21 19:37:55 +02:00
2025-05-03 19:49:15 +02:00
2025-05-03 19:49:15 +02:00
2025-05-03 19:49:15 +02:00
2025-08-11 22:03:32 +01:00
2025-05-06 20:11:25 -04:00
2025-08-01 12:20:32 -04:00
2025-08-29 13:22:23 +00:00
2025-08-01 12:20:32 -04:00
2025-09-08 13:26:21 -07:00
2025-05-09 13:40:51 -04:00
2025-09-05 17:56:06 +01:00
2025-09-08 21:08:35 +00:00
2025-08-28 14:34:49 +02:00
2025-05-03 19:49:15 +02:00
2025-05-03 19:49:15 +02:00
2025-08-25 18:49:49 +00:00
2025-07-25 07:11:11 +00:00
2025-07-24 08:24:26 +00:00
2025-09-05 09:19:14 +02:00
2025-07-21 19:37:55 +02:00
2025-08-27 13:21:47 +01:00
2025-07-25 07:11:11 +00:00