Commit 79d36f5
committed
use an enum to distinguish builtin/overloaded pat adjusts
This makes the existing code a little less fragile, but it's also
future-proofing. In another PR, I plan on lowering deref patterns on
boxes to THIR `PatKind::Deref` rather than `PatKind::DerefPattern`,
which should allow moving out of them when matching (like how box
patterns are implemented). Having an enum means we can change just
`Ty::pat_adjust_kind` to handle this for implicit deref patterns, rather
than checking for `ty.is_ref() || ty.is_box()` everywhere we were
checking `ty.is_ref()`.
This could maybe be made a bit more robust by introducing a
`PatAdjustment` struct analogous to `ty::adjustment::Adjustment`, but I
think that'd probably be too heavy-weight for how this is used. If there
were more kinds of or subtleties to pattern adjustments, that might be
helpful, though.
I'm not totally sure this belongs in `rustc_middle::ty::adjustment`, but
the only other place I could think of it was `rustc_middle::ty::util`. I
think this placement makes enough sense to avoid putting more things in
`ty::util`, even if it's not a perfect fit.1 parent 703191a commit 79d36f5
File tree
4 files changed
+47
-23
lines changed- compiler
- rustc_hir_typeck/src
- rustc_middle/src/ty
- rustc_mir_build/src/thir/pattern
4 files changed
+47
-23
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1682 | 1682 | | |
1683 | 1683 | | |
1684 | 1684 | | |
1685 | | - | |
1686 | | - | |
1687 | | - | |
1688 | | - | |
1689 | | - | |
1690 | | - | |
1691 | | - | |
1692 | | - | |
1693 | | - | |
1694 | | - | |
1695 | | - | |
1696 | | - | |
1697 | | - | |
1698 | | - | |
1699 | | - | |
| 1685 | + | |
| 1686 | + | |
| 1687 | + | |
| 1688 | + | |
| 1689 | + | |
| 1690 | + | |
| 1691 | + | |
| 1692 | + | |
| 1693 | + | |
| 1694 | + | |
| 1695 | + | |
| 1696 | + | |
| 1697 | + | |
| 1698 | + | |
| 1699 | + | |
| 1700 | + | |
1700 | 1701 | | |
1701 | 1702 | | |
1702 | 1703 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
30 | 30 | | |
31 | 31 | | |
32 | 32 | | |
| 33 | + | |
33 | 34 | | |
34 | 35 | | |
35 | 36 | | |
| |||
483 | 484 | | |
484 | 485 | | |
485 | 486 | | |
486 | | - | |
| 487 | + | |
487 | 488 | | |
488 | 489 | | |
489 | 490 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
214 | 214 | | |
215 | 215 | | |
216 | 216 | | |
| 217 | + | |
| 218 | + | |
| 219 | + | |
| 220 | + | |
| 221 | + | |
| 222 | + | |
| 223 | + | |
| 224 | + | |
| 225 | + | |
| 226 | + | |
| 227 | + | |
| 228 | + | |
| 229 | + | |
| 230 | + | |
| 231 | + | |
| 232 | + | |
| 233 | + | |
| 234 | + | |
| 235 | + | |
| 236 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
17 | 17 | | |
18 | 18 | | |
19 | 19 | | |
| 20 | + | |
20 | 21 | | |
21 | 22 | | |
22 | 23 | | |
| |||
106 | 107 | | |
107 | 108 | | |
108 | 109 | | |
109 | | - | |
110 | | - | |
111 | | - | |
112 | | - | |
113 | | - | |
114 | | - | |
115 | | - | |
| 110 | + | |
| 111 | + | |
| 112 | + | |
| 113 | + | |
| 114 | + | |
| 115 | + | |
| 116 | + | |
| 117 | + | |
116 | 118 | | |
117 | 119 | | |
118 | 120 | | |
| |||
0 commit comments