Commit 688478f
authored
Rollup merge of rust-lang#139762 - compiler-errors:non-env, r=lcnr
Don't assemble non-env/bound candidates if projection is rigid
Putting this up for an initial review, it's still missing comments, clean-up, and possibly a tweak to deal with ambiguities in the `BestObligation` folder.
This PR fixes rust-lang/trait-system-refactor-initiative#173. Specifically, we're creating an unnecessary query cycle in normalization by assembling an *impl candidate* even if we know later on during `merge_candidates` that we'll be filtering out that impl candidate.
This PR adjusts the `merge_candidates` to assemble *only* env/bound candidates if we have `TraitGoalProvenVia::ParamEnv | TraitGoalProvenVia::AliasBound`.
I'll leave some thoughts/comments in the code.
r? lcnrFile tree
6 files changed
+107
-56
lines changed- compiler/rustc_next_trait_solver/src/solve
- assembly
- normalizes_to
- tests/ui
- traits/next-solver
6 files changed
+107
-56
lines changedLines changed: 54 additions & 33 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
288 | 288 | | |
289 | 289 | | |
290 | 290 | | |
| 291 | + | |
| 292 | + | |
| 293 | + | |
| 294 | + | |
| 295 | + | |
| 296 | + | |
| 297 | + | |
| 298 | + | |
| 299 | + | |
| 300 | + | |
| 301 | + | |
| 302 | + | |
| 303 | + | |
| 304 | + | |
| 305 | + | |
291 | 306 | | |
292 | 307 | | |
293 | 308 | | |
| |||
296 | 311 | | |
297 | 312 | | |
298 | 313 | | |
| 314 | + | |
299 | 315 | | |
300 | 316 | | |
301 | 317 | | |
| |||
322 | 338 | | |
323 | 339 | | |
324 | 340 | | |
325 | | - | |
326 | | - | |
327 | | - | |
328 | | - | |
329 | 341 | | |
330 | | - | |
331 | | - | |
332 | | - | |
333 | 342 | | |
334 | 343 | | |
| 344 | + | |
| 345 | + | |
| 346 | + | |
| 347 | + | |
| 348 | + | |
| 349 | + | |
| 350 | + | |
| 351 | + | |
| 352 | + | |
335 | 353 | | |
336 | 354 | | |
337 | 355 | | |
| |||
754 | 772 | | |
755 | 773 | | |
756 | 774 | | |
| 775 | + | |
| 776 | + | |
| 777 | + | |
757 | 778 | | |
758 | 779 | | |
759 | 780 | | |
| |||
782 | 803 | | |
783 | 804 | | |
784 | 805 | | |
785 | | - | |
| 806 | + | |
786 | 807 | | |
787 | 808 | | |
788 | | - | |
| 809 | + | |
789 | 810 | | |
790 | 811 | | |
791 | 812 | | |
792 | 813 | | |
793 | 814 | | |
794 | 815 | | |
795 | | - | |
| 816 | + | |
| 817 | + | |
| 818 | + | |
| 819 | + | |
796 | 820 | | |
797 | 821 | | |
798 | 822 | | |
799 | 823 | | |
800 | | - | |
801 | | - | |
802 | | - | |
803 | | - | |
804 | | - | |
805 | | - | |
806 | | - | |
807 | | - | |
808 | 824 | | |
809 | 825 | | |
810 | | - | |
811 | | - | |
| 826 | + | |
| 827 | + | |
| 828 | + | |
| 829 | + | |
812 | 830 | | |
813 | | - | |
814 | | - | |
815 | | - | |
816 | | - | |
817 | | - | |
818 | | - | |
819 | | - | |
820 | | - | |
821 | | - | |
822 | | - | |
823 | | - | |
824 | | - | |
825 | | - | |
| 831 | + | |
| 832 | + | |
| 833 | + | |
| 834 | + | |
| 835 | + | |
| 836 | + | |
| 837 | + | |
| 838 | + | |
| 839 | + | |
| 840 | + | |
| 841 | + | |
| 842 | + | |
| 843 | + | |
826 | 844 | | |
827 | 845 | | |
828 | 846 | | |
| |||
839 | 857 | | |
840 | 858 | | |
841 | 859 | | |
| 860 | + | |
| 861 | + | |
| 862 | + | |
842 | 863 | | |
843 | 864 | | |
844 | 865 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
399 | 399 | | |
400 | 400 | | |
401 | 401 | | |
402 | | - | |
403 | 402 | | |
404 | 403 | | |
405 | 404 | | |
406 | 405 | | |
407 | 406 | | |
408 | | - | |
| 407 | + | |
409 | 408 | | |
410 | 409 | | |
Lines changed: 1 addition & 2 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
32 | 32 | | |
33 | 33 | | |
34 | 34 | | |
35 | | - | |
36 | 35 | | |
37 | 36 | | |
38 | 37 | | |
39 | 38 | | |
40 | 39 | | |
41 | 40 | | |
42 | | - | |
| 41 | + | |
43 | 42 | | |
44 | 43 | | |
45 | 44 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
13 | 13 | | |
14 | 14 | | |
15 | 15 | | |
16 | | - | |
| 16 | + | |
17 | 17 | | |
18 | 18 | | |
19 | 19 | | |
| |||
1365 | 1365 | | |
1366 | 1366 | | |
1367 | 1367 | | |
1368 | | - | |
| 1368 | + | |
1369 | 1369 | | |
1370 | 1370 | | |
1371 | 1371 | | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
7 | 7 | | |
8 | 8 | | |
9 | 9 | | |
10 | | - | |
11 | | - | |
12 | | - | |
13 | | - | |
14 | | - | |
15 | | - | |
16 | | - | |
17 | | - | |
18 | | - | |
19 | | - | |
20 | | - | |
21 | | - | |
22 | | - | |
23 | | - | |
24 | | - | |
25 | | - | |
26 | | - | |
27 | 10 | | |
28 | 11 | | |
29 | 12 | | |
| |||
52 | 35 | | |
53 | 36 | | |
54 | 37 | | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
55 | 44 | | |
56 | 45 | | |
57 | 46 | | |
| |||
70 | 59 | | |
71 | 60 | | |
72 | 61 | | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
73 | 73 | | |
74 | 74 | | |
75 | 75 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
0 commit comments