diff options
| author | bors <bors@rust-lang.org> | 2025-03-20 14:31:34 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2025-03-20 14:31:34 +0000 |
| commit | d8e44b722a93e55cbc9a8188dfbfe3faf1226096 (patch) | |
| tree | 813918a15fdb2dc6bb9118f328afc4fc5c83b711 /compiler/rustc_pattern_analysis/src/rustc.rs | |
| parent | 87e60a7d285f8ea560189024f85f2b194d1f168f (diff) | |
| parent | 0a6a0e47d2efb207ad0e95c3eb67b543c8cbb2e6 (diff) | |
| download | rust-d8e44b722a93e55cbc9a8188dfbfe3faf1226096.tar.gz rust-d8e44b722a93e55cbc9a8188dfbfe3faf1226096.zip | |
Auto merge of #133889 - compiler-errors:inh-unstable, r=Nadrieril
Consider fields to be inhabited if they are unstable Fixes #133885 with a simple heuristic r? Nadrieril Not totally certain if this needs T-lang approval or a crater run.
Diffstat (limited to 'compiler/rustc_pattern_analysis/src/rustc.rs')
| -rw-r--r-- | compiler/rustc_pattern_analysis/src/rustc.rs | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/compiler/rustc_pattern_analysis/src/rustc.rs b/compiler/rustc_pattern_analysis/src/rustc.rs index fec525c9e8c..a25a80cd45f 100644 --- a/compiler/rustc_pattern_analysis/src/rustc.rs +++ b/compiler/rustc_pattern_analysis/src/rustc.rs @@ -15,7 +15,7 @@ use rustc_middle::ty::{ }; use rustc_middle::{bug, span_bug}; use rustc_session::lint; -use rustc_span::{DUMMY_SP, ErrorGuaranteed, Span}; +use rustc_span::{DUMMY_SP, ErrorGuaranteed, Span, sym}; use crate::constructor::Constructor::*; use crate::constructor::{ @@ -230,7 +230,11 @@ impl<'p, 'tcx: 'p> RustcPatCtxt<'p, 'tcx> { let is_visible = adt.is_enum() || field.vis.is_accessible_from(cx.module, cx.tcx); let is_uninhabited = cx.is_uninhabited(*ty); - let skip = is_uninhabited && !is_visible; + let is_unstable = + cx.tcx.lookup_stability(field.did).is_some_and(|stab| { + stab.is_unstable() && stab.feature != sym::rustc_private + }); + let skip = is_uninhabited && (!is_visible || is_unstable); (ty, PrivateUninhabitedField(skip)) }); cx.dropless_arena.alloc_from_iter(tys) |
