Commit e85a171
committed
a parameter its own body rebinds stands for no one value, so it keeps no bound
`body_parameter_constraints` already computes `single_bindings` — a name bound more than
once cannot stand for one value — and applied it to every local except the parameter
itself. this applies it there too, which is the rule the file already states rather than
an exception carved for this case.
measured over the 153 top-level stdlib modules, two binaries from one tree: 5041
diagnostics to 4790. **−254 by location and +3**, across 41 modules. the other 46 of the
49 added lines are the same diagnostic at the same file:line:col with a differently
rendered type, and read better for it — `has no attribute 'startswith'` on `object`
becomes `not defined on 'None' in union 'Unknown | str | None'`, which names the actual
bug in `inspect.getsourcefile`'s None return. all 3 genuinely new ones are correct.
of the 254 removed, about 249 are false positives and 5 are real. the strongest thing lost
is `code._showtraceback`, where `sys.exc_info()` gives `BaseException | None` against a
body calling `value.with_traceback(tb)` — and that only survived because the same body's
rebinding was not reachable above it.
1 parent 58ee1ff commit e85a171
3 files changed
Lines changed: 79 additions & 9 deletions
File tree
- crates/ty_python_semantic
- resources/mdtest
- src/types
- docs/basedpython/features
Lines changed: 44 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
567 | 567 | | |
568 | 568 | | |
569 | 569 | | |
| 570 | + | |
| 571 | + | |
| 572 | + | |
| 573 | + | |
| 574 | + | |
| 575 | + | |
| 576 | + | |
| 577 | + | |
| 578 | + | |
| 579 | + | |
| 580 | + | |
| 581 | + | |
| 582 | + | |
| 583 | + | |
| 584 | + | |
| 585 | + | |
| 586 | + | |
| 587 | + | |
| 588 | + | |
| 589 | + | |
| 590 | + | |
| 591 | + | |
| 592 | + | |
| 593 | + | |
| 594 | + | |
| 595 | + | |
| 596 | + | |
| 597 | + | |
| 598 | + | |
| 599 | + | |
| 600 | + | |
| 601 | + | |
| 602 | + | |
| 603 | + | |
| 604 | + | |
| 605 | + | |
| 606 | + | |
| 607 | + | |
| 608 | + | |
| 609 | + | |
| 610 | + | |
| 611 | + | |
| 612 | + | |
| 613 | + | |
570 | 614 | | |
571 | 615 | | |
572 | 616 | | |
| |||
Lines changed: 22 additions & 9 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
393 | 393 | | |
394 | 394 | | |
395 | 395 | | |
396 | | - | |
397 | | - | |
| 396 | + | |
| 397 | + | |
398 | 398 | | |
399 | 399 | | |
400 | 400 | | |
| |||
431 | 431 | | |
432 | 432 | | |
433 | 433 | | |
434 | | - | |
435 | | - | |
436 | | - | |
437 | | - | |
438 | | - | |
439 | | - | |
440 | | - | |
| 434 | + | |
| 435 | + | |
| 436 | + | |
| 437 | + | |
| 438 | + | |
| 439 | + | |
| 440 | + | |
| 441 | + | |
| 442 | + | |
| 443 | + | |
| 444 | + | |
| 445 | + | |
| 446 | + | |
| 447 | + | |
| 448 | + | |
| 449 | + | |
| 450 | + | |
| 451 | + | |
| 452 | + | |
| 453 | + | |
441 | 454 | | |
442 | 455 | | |
443 | 456 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
174 | 174 | | |
175 | 175 | | |
176 | 176 | | |
| 177 | + | |
| 178 | + | |
| 179 | + | |
| 180 | + | |
| 181 | + | |
| 182 | + | |
| 183 | + | |
| 184 | + | |
| 185 | + | |
| 186 | + | |
| 187 | + | |
| 188 | + | |
| 189 | + | |
177 | 190 | | |
178 | 191 | | |
179 | 192 | | |
| |||
0 commit comments