[ty] Shrink reachability constraints by MichaReiser · Pull Request #19410 · astral-sh/ruff

@MichaReiser

@MichaReiser added the ty

Multi-file analysis & type inference

label

Jul 17, 2025

dcreager

AlexWaygood

@MichaReiser MichaReiser deleted the micha/shrink-reachability-constraints branch

July 18, 2025 05:36

dcreager added a commit that referenced this pull request

Jul 18, 2025
* main:
  [ty] Use `…` as the "cut" indicator in diagnostic rendering (#19420)
  [ty] synthesize __setattr__ for frozen dataclasses (#19307)
  [ty] Fixed bug in semantic token provider for parameters. (#19418)
  [ty] Shrink reachability constraints (#19410)
  Move JUnit rendering to `ruff_db` (#19370)

dcreager added a commit that referenced this pull request

Jul 21, 2025
This is a follow-on to #19410 that further reduces the memory usage of
our reachability constraints. When finishing the building of a use-def
map, we walk through all of the "final" states and mark only those
reachability constraints as "used". We then throw away the interior TDD
nodes of any reachability constraints that weren't marked as used.

(This helps because we build up quite a few intermediate TDD nodes when
constructing complex reachability constraints. These nodes can never be
accessed if they were _only_ used as an intermediate TDD node. The
marking step ensures that we keep any nodes that ended up being referred
to in some accessible use-def map state.)