-
Notifications
You must be signed in to change notification settings - Fork 13.8k
Commit c4e05e5
Auto merge of #136988 - compiler-errors:impossible_predicates, r=lcnr
Use the new solver in the `impossible_predicates`
The old solver is unsound for many reasons. One of which was weaponized by `@lcnr` in #140212, where the old solver was incompletely considering a dyn vtable method to be impossible and replacing its vtable entry with a null value. This null function could be called post-mono.
The new solver is expected to be less incomplete due to its correct handling of higher-ranked aliases in relate. This PR switches the `impossible_predicates` query to use the new solver, which patches this UB.
r? lcnrFile tree
2 files changed
+43
-9
lines changed- compiler/rustc_trait_selection/src/traits
- tests/ui/traits/vtable
2 files changed
+43
-9
lines changedOriginal file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
690 | 690 |
| |
691 | 691 |
| |
692 | 692 |
| |
693 | - | ||
694 | - | ||
693 | + | ||
694 | + | ||
695 | + | ||
696 | + | ||
697 | + | ||
695 | 698 |
| |
696 | 699 |
| |
697 | 700 |
| |
| |||
704 | 707 |
| |
705 | 708 |
| |
706 | 709 |
| |
707 | - | ||
708 | - | ||
709 | - | ||
710 | - | ||
711 | - | ||
712 | - | ||
713 | - | ||
714 | 710 |
| |
715 | 711 |
| |
716 | 712 |
| |
|
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 | + | ||
33 | + | ||
34 | + | ||
35 | + | ||
36 | + | ||
37 | + | ||
38 | + |
0 commit comments