Commit 4322d4f
authored
Improve the handling of "iteration dependent" errors and notes in finally clauses. (#19270)
Fixes #19269
This PR refactors the logic implemented in #19118 (which only targeted
repeatedly checked loops) and applies it to repeatedly checked finally
clauses.
I moved nearly all relevant code to the class `LoopErrorWatcher`, which
now has the more general name `IterationErrorWatcher`, to avoid code
duplication. However, one duplication is left, which concerns error
reporting. It would be nice and easy to move this functionality to
`IterationErrorWatcher`, too, but this would result in import cycles,
and I am unsure if working with `TYPE_CHECKING` and postponed importing
is acceptable in such cases (both for Mypy and Mypyc).
After the refactoring, it should not be much effort to apply the logic
to other cases where code sections are analysed iteratively. However,
the only thing that comes to my mind is the repeated checking of
functions with arguments that contain constrained type variables. I will
check it. If anyone finds a similar case and the solution is as simple
as expected, we could add the fix to this PR, of course.1 parent ffb6928 commit 4322d4f
File tree
5 files changed
+148
-58
lines changed- mypy
- test-data/unit
5 files changed
+148
-58
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
25 | 25 | | |
26 | 26 | | |
27 | 27 | | |
28 | | - | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
29 | 36 | | |
30 | 37 | | |
31 | 38 | | |
| |||
598 | 605 | | |
599 | 606 | | |
600 | 607 | | |
601 | | - | |
602 | | - | |
603 | | - | |
604 | | - | |
605 | | - | |
606 | | - | |
607 | | - | |
608 | | - | |
| 608 | + | |
609 | 609 | | |
610 | 610 | | |
611 | 611 | | |
612 | 612 | | |
613 | 613 | | |
614 | 614 | | |
615 | | - | |
| 615 | + | |
616 | 616 | | |
617 | | - | |
618 | | - | |
619 | | - | |
620 | | - | |
621 | 617 | | |
622 | 618 | | |
623 | 619 | | |
| |||
639 | 635 | | |
640 | 636 | | |
641 | 637 | | |
642 | | - | |
643 | | - | |
644 | | - | |
645 | | - | |
646 | | - | |
647 | | - | |
648 | | - | |
649 | | - | |
650 | | - | |
651 | | - | |
652 | | - | |
653 | | - | |
654 | | - | |
655 | | - | |
656 | | - | |
657 | | - | |
658 | | - | |
659 | | - | |
660 | | - | |
661 | | - | |
662 | | - | |
663 | | - | |
664 | | - | |
| 638 | + | |
| 639 | + | |
| 640 | + | |
| 641 | + | |
665 | 642 | | |
666 | 643 | | |
667 | 644 | | |
| |||
4960 | 4937 | | |
4961 | 4938 | | |
4962 | 4939 | | |
| 4940 | + | |
| 4941 | + | |
| 4942 | + | |
4963 | 4943 | | |
4964 | 4944 | | |
4965 | 4945 | | |
| |||
4974 | 4954 | | |
4975 | 4955 | | |
4976 | 4956 | | |
4977 | | - | |
| 4957 | + | |
| 4958 | + | |
| 4959 | + | |
4978 | 4960 | | |
4979 | 4961 | | |
4980 | 4962 | | |
| |||
4988 | 4970 | | |
4989 | 4971 | | |
4990 | 4972 | | |
| 4973 | + | |
4991 | 4974 | | |
4992 | | - | |
| 4975 | + | |
| 4976 | + | |
| 4977 | + | |
| 4978 | + | |
| 4979 | + | |
| 4980 | + | |
| 4981 | + | |
4993 | 4982 | | |
4994 | 4983 | | |
4995 | 4984 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
4 | 4 | | |
5 | 5 | | |
6 | 6 | | |
7 | | - | |
| 7 | + | |
| 8 | + | |
8 | 9 | | |
9 | 10 | | |
10 | 11 | | |
11 | 12 | | |
12 | 13 | | |
13 | 14 | | |
| 15 | + | |
14 | 16 | | |
15 | 17 | | |
16 | 18 | | |
| |||
219 | 221 | | |
220 | 222 | | |
221 | 223 | | |
222 | | - | |
223 | | - | |
224 | | - | |
225 | | - | |
| 224 | + | |
| 225 | + | |
| 226 | + | |
| 227 | + | |
| 228 | + | |
226 | 229 | | |
227 | | - | |
228 | | - | |
| 230 | + | |
| 231 | + | |
| 232 | + | |
| 233 | + | |
229 | 234 | | |
230 | | - | |
| 235 | + | |
| 236 | + | |
| 237 | + | |
| 238 | + | |
| 239 | + | |
| 240 | + | |
| 241 | + | |
231 | 242 | | |
232 | 243 | | |
233 | | - | |
234 | | - | |
| 244 | + | |
| 245 | + | |
| 246 | + | |
| 247 | + | |
| 248 | + | |
| 249 | + | |
| 250 | + | |
| 251 | + | |
| 252 | + | |
| 253 | + | |
| 254 | + | |
| 255 | + | |
235 | 256 | | |
236 | 257 | | |
237 | 258 | | |
238 | 259 | | |
| 260 | + | |
239 | 261 | | |
240 | 262 | | |
241 | 263 | | |
| |||
247 | 269 | | |
248 | 270 | | |
249 | 271 | | |
250 | | - | |
251 | | - | |
252 | | - | |
| 272 | + | |
| 273 | + | |
| 274 | + | |
253 | 275 | | |
254 | 276 | | |
| 277 | + | |
| 278 | + | |
| 279 | + | |
| 280 | + | |
255 | 281 | | |
256 | 282 | | |
257 | | - | |
| 283 | + | |
258 | 284 | | |
259 | 285 | | |
260 | 286 | | |
261 | | - | |
| 287 | + | |
262 | 288 | | |
263 | 289 | | |
264 | 290 | | |
265 | 291 | | |
266 | 292 | | |
267 | 293 | | |
268 | | - | |
| 294 | + | |
269 | 295 | | |
270 | | - | |
| 296 | + | |
271 | 297 | | |
272 | 298 | | |
273 | 299 | | |
274 | 300 | | |
| 301 | + | |
| 302 | + | |
| 303 | + | |
| 304 | + | |
| 305 | + | |
| 306 | + | |
| 307 | + | |
| 308 | + | |
| 309 | + | |
| 310 | + | |
| 311 | + | |
| 312 | + | |
| 313 | + | |
| 314 | + | |
| 315 | + | |
| 316 | + | |
| 317 | + | |
| 318 | + | |
| 319 | + | |
| 320 | + | |
| 321 | + | |
| 322 | + | |
| 323 | + | |
| 324 | + | |
| 325 | + | |
| 326 | + | |
| 327 | + | |
| 328 | + | |
| 329 | + | |
| 330 | + | |
| 331 | + | |
| 332 | + | |
| 333 | + | |
| 334 | + | |
| 335 | + | |
| 336 | + | |
275 | 337 | | |
276 | 338 | | |
277 | 339 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
2446 | 2446 | | |
2447 | 2447 | | |
2448 | 2448 | | |
| 2449 | + | |
| 2450 | + | |
| 2451 | + | |
| 2452 | + | |
| 2453 | + | |
| 2454 | + | |
| 2455 | + | |
| 2456 | + | |
| 2457 | + | |
| 2458 | + | |
| 2459 | + | |
| 2460 | + | |
| 2461 | + | |
| 2462 | + | |
| 2463 | + | |
| 2464 | + | |
| 2465 | + | |
| 2466 | + | |
| 2467 | + | |
2449 | 2468 | | |
2450 | 2469 | | |
2451 | 2470 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
791 | 791 | | |
792 | 792 | | |
793 | 793 | | |
794 | | - | |
795 | | - | |
| 794 | + | |
796 | 795 | | |
797 | 796 | | |
798 | 797 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
55 | 55 | | |
56 | 56 | | |
57 | 57 | | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
0 commit comments