Commit e0149cd
authored
[ty] Return a tuple spec from the iterator protocol (#19496)
This PR updates our iterator protocol machinery to return a tuple spec
describing the elements that are returned, instead of a type. That
allows us to track heterogeneous iterators more precisely, and
consolidates the logic in unpacking and splatting, which are the two
places where we can take advantage of that more precise information.
(Other iterator consumers, like `for` loops, have to collapse the
iterated elements down to a single type regardless, and we provide a new
helper method on `TupleSpec` to perform that summarization.)1 parent 2a00eca commit e0149cd
File tree
10 files changed
+204
-125
lines changed- crates/ty_python_semantic
- resources/mdtest
- call
- loops
- src
- types
- call
10 files changed
+204
-125
lines changedLines changed: 75 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
259 | 259 | | |
260 | 260 | | |
261 | 261 | | |
| 262 | + | |
| 263 | + | |
| 264 | + | |
| 265 | + | |
| 266 | + | |
| 267 | + | |
| 268 | + | |
| 269 | + | |
| 270 | + | |
| 271 | + | |
| 272 | + | |
| 273 | + | |
| 274 | + | |
| 275 | + | |
| 276 | + | |
| 277 | + | |
| 278 | + | |
| 279 | + | |
| 280 | + | |
| 281 | + | |
| 282 | + | |
| 283 | + | |
| 284 | + | |
| 285 | + | |
| 286 | + | |
| 287 | + | |
| 288 | + | |
| 289 | + | |
| 290 | + | |
| 291 | + | |
| 292 | + | |
| 293 | + | |
| 294 | + | |
| 295 | + | |
| 296 | + | |
| 297 | + | |
| 298 | + | |
| 299 | + | |
| 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 | + | |
262 | 337 | | |
263 | 338 | | |
264 | 339 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
738 | 738 | | |
739 | 739 | | |
740 | 740 | | |
| 741 | + | |
| 742 | + | |
| 743 | + | |
| 744 | + | |
| 745 | + | |
| 746 | + | |
| 747 | + | |
741 | 748 | | |
742 | 749 | | |
743 | 750 | | |
744 | 751 | | |
745 | 752 | | |
746 | 753 | | |
747 | 754 | | |
748 | | - | |
| 755 | + | |
749 | 756 | | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
2 | 2 | | |
3 | 3 | | |
4 | 4 | | |
| 5 | + | |
5 | 6 | | |
6 | 7 | | |
7 | 8 | | |
| |||
56 | 57 | | |
57 | 58 | | |
58 | 59 | | |
59 | | - | |
| 60 | + | |
60 | 61 | | |
61 | 62 | | |
62 | 63 | | |
| |||
813 | 814 | | |
814 | 815 | | |
815 | 816 | | |
816 | | - | |
817 | | - | |
818 | | - | |
819 | | - | |
820 | | - | |
821 | | - | |
822 | | - | |
823 | 817 | | |
824 | 818 | | |
825 | 819 | | |
| |||
4615 | 4609 | | |
4616 | 4610 | | |
4617 | 4611 | | |
4618 | | - | |
| 4612 | + | |
4619 | 4613 | | |
4620 | 4614 | | |
4621 | 4615 | | |
4622 | | - | |
| 4616 | + | |
4623 | 4617 | | |
4624 | | - | |
| 4618 | + | |
4625 | 4619 | | |
4626 | 4620 | | |
4627 | 4621 | | |
4628 | | - | |
| 4622 | + | |
4629 | 4623 | | |
4630 | | - | |
| 4624 | + | |
| 4625 | + | |
4631 | 4626 | | |
4632 | | - | |
4633 | | - | |
| 4627 | + | |
4634 | 4628 | | |
4635 | | - | |
4636 | | - | |
4637 | | - | |
4638 | | - | |
4639 | | - | |
4640 | | - | |
4641 | | - | |
4642 | | - | |
4643 | | - | |
4644 | | - | |
4645 | | - | |
| 4629 | + | |
| 4630 | + | |
| 4631 | + | |
| 4632 | + | |
| 4633 | + | |
| 4634 | + | |
| 4635 | + | |
| 4636 | + | |
| 4637 | + | |
| 4638 | + | |
| 4639 | + | |
| 4640 | + | |
| 4641 | + | |
| 4642 | + | |
| 4643 | + | |
| 4644 | + | |
| 4645 | + | |
| 4646 | + | |
| 4647 | + | |
| 4648 | + | |
| 4649 | + | |
| 4650 | + | |
| 4651 | + | |
| 4652 | + | |
| 4653 | + | |
4646 | 4654 | | |
| 4655 | + | |
4647 | 4656 | | |
4648 | 4657 | | |
4649 | 4658 | | |
| |||
4669 | 4678 | | |
4670 | 4679 | | |
4671 | 4680 | | |
4672 | | - | |
4673 | | - | |
4674 | | - | |
4675 | | - | |
4676 | | - | |
4677 | | - | |
| 4681 | + | |
| 4682 | + | |
| 4683 | + | |
| 4684 | + | |
| 4685 | + | |
| 4686 | + | |
| 4687 | + | |
| 4688 | + | |
4678 | 4689 | | |
4679 | 4690 | | |
4680 | 4691 | | |
| |||
4692 | 4703 | | |
4693 | 4704 | | |
4694 | 4705 | | |
4695 | | - | |
| 4706 | + | |
4696 | 4707 | | |
4697 | 4708 | | |
4698 | | - | |
| 4709 | + | |
4699 | 4710 | | |
4700 | 4711 | | |
4701 | 4712 | | |
| |||
4718 | 4729 | | |
4719 | 4730 | | |
4720 | 4731 | | |
4721 | | - | |
4722 | | - | |
4723 | | - | |
| 4732 | + | |
| 4733 | + | |
| 4734 | + | |
| 4735 | + | |
4724 | 4736 | | |
4725 | | - | |
4726 | | - | |
4727 | | - | |
| 4737 | + | |
| 4738 | + | |
4728 | 4739 | | |
4729 | 4740 | | |
4730 | 4741 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
51 | 51 | | |
52 | 52 | | |
53 | 53 | | |
54 | | - | |
55 | | - | |
56 | | - | |
57 | | - | |
58 | | - | |
59 | | - | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
60 | 58 | | |
61 | 59 | | |
62 | 60 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
977 | 977 | | |
978 | 978 | | |
979 | 979 | | |
980 | | - | |
981 | | - | |
982 | | - | |
983 | | - | |
984 | | - | |
985 | | - | |
986 | | - | |
987 | | - | |
988 | | - | |
989 | | - | |
990 | | - | |
991 | | - | |
992 | | - | |
993 | | - | |
994 | | - | |
995 | | - | |
996 | | - | |
997 | | - | |
| 980 | + | |
| 981 | + | |
| 982 | + | |
| 983 | + | |
| 984 | + | |
| 985 | + | |
| 986 | + | |
| 987 | + | |
998 | 988 | | |
999 | 989 | | |
1000 | 990 | | |
| |||
2097 | 2087 | | |
2098 | 2088 | | |
2099 | 2089 | | |
2100 | | - | |
2101 | | - | |
2102 | | - | |
2103 | | - | |
2104 | | - | |
2105 | | - | |
2106 | | - | |
2107 | | - | |
| 2090 | + | |
2108 | 2091 | | |
2109 | 2092 | | |
2110 | 2093 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
618 | 618 | | |
619 | 619 | | |
620 | 620 | | |
| 621 | + | |
| 622 | + | |
621 | 623 | | |
622 | 624 | | |
623 | 625 | | |
| |||
2137 | 2139 | | |
2138 | 2140 | | |
2139 | 2141 | | |
2140 | | - | |
| 2142 | + | |
| 2143 | + | |
2141 | 2144 | | |
2142 | 2145 | | |
2143 | 2146 | | |
| |||
2195 | 2198 | | |
2196 | 2199 | | |
2197 | 2200 | | |
2198 | | - | |
| 2201 | + | |
| 2202 | + | |
2199 | 2203 | | |
2200 | 2204 | | |
2201 | 2205 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
194 | 194 | | |
195 | 195 | | |
196 | 196 | | |
197 | | - | |
| 197 | + | |
198 | 198 | | |
199 | 199 | | |
200 | 200 | | |
| |||
0 commit comments