diff options
| author | Nadrieril <nadrieril+git@gmail.com> | 2025-03-29 13:55:05 +0100 |
|---|---|---|
| committer | Nadrieril <nadrieril+git@gmail.com> | 2025-04-06 17:27:27 +0200 |
| commit | 090d76497f67f915f977c1176d50acaa2c962aeb (patch) | |
| tree | a6b77293b0634ceb66817e63babb8ae6bb351091 /compiler/rustc_middle | |
| parent | de57c0515d39a285541039205e7f9d6b06430031 (diff) | |
| download | rust-090d76497f67f915f977c1176d50acaa2c962aeb.tar.gz rust-090d76497f67f915f977c1176d50acaa2c962aeb.zip | |
Remove the `is_inline` field from `PatKind::ExpandedConstant`
Diffstat (limited to 'compiler/rustc_middle')
| -rw-r--r-- | compiler/rustc_middle/src/thir.rs | 22 |
1 files changed, 8 insertions, 14 deletions
diff --git a/compiler/rustc_middle/src/thir.rs b/compiler/rustc_middle/src/thir.rs index 8d373cb3b30..bc49c197ef8 100644 --- a/compiler/rustc_middle/src/thir.rs +++ b/compiler/rustc_middle/src/thir.rs @@ -812,23 +812,17 @@ pub enum PatKind<'tcx> { }, /// Pattern obtained by converting a constant (inline or named) to its pattern - /// representation using `const_to_pat`. + /// representation using `const_to_pat`. This is used for unsafety checking. ExpandedConstant { - /// [DefId] of the constant, we need this so that we have a - /// reference that can be used by unsafety checking to visit nested - /// unevaluated constants and for diagnostics. If the `DefId` doesn't - /// correspond to a local crate, it points at the `const` item. + /// [DefId] of the constant item. def_id: DefId, - /// If `false`, then `def_id` points at a `const` item, otherwise it - /// corresponds to a local inline const. - is_inline: bool, - /// If the inline constant is used in a range pattern, this subpattern - /// represents the range (if both ends are inline constants, there will - /// be multiple InlineConstant wrappers). + /// The pattern that the constant lowered to. /// - /// Otherwise, the actual pattern that the constant lowered to. As with - /// other constants, inline constants are matched structurally where - /// possible. + /// HACK: we need to keep the `DefId` of inline constants around for unsafety checking; + /// therefore when a range pattern contains inline constants, we re-wrap the range pattern + /// with the `ExpandedConstant` nodes that correspond to the range endpoints. Hence + /// `subpattern` may actually be a range pattern, and `def_id` be the constant for one of + /// its endpoints. subpattern: Box<Pat<'tcx>>, }, |
