File tree Expand file tree Collapse file tree 4 files changed +38
-2
lines changed
compiler/rustc_middle/src/ty/inhabitedness Expand file tree Collapse file tree 4 files changed +38
-2
lines changed Original file line number Diff line number Diff line change 4343//! This code should only compile in modules where the uninhabitedness of `Foo`
4444//! is visible.
4545
46+ use rustc_span:: sym;
4647use rustc_type_ir:: TyKind :: * ;
4748use tracing:: instrument;
4849
@@ -90,7 +91,13 @@ impl<'tcx> VariantDef {
9091 // `let pred = pred.or(InhabitedPredicate::IsUnstable(field.did));`
9192 // but this is unnecessary for now, since it would only affect nightly-only
9293 // code or code within the standard library itself.
93- if tcx. lookup_stability ( field. did ) . is_some_and ( |stab| stab. is_unstable ( ) ) {
94+ // HACK: We filter out `rustc_private` fields since with the flag
95+ // `-Zforce-unstable-if-unmarked` we consider all unmarked fields to be
96+ // unstable when building the compiler.
97+ if tcx
98+ . lookup_stability ( field. did )
99+ . is_some_and ( |stab| stab. is_unstable ( ) && stab. feature != sym:: rustc_private)
100+ {
94101 return InhabitedPredicate :: True ;
95102 }
96103 let pred = tcx. type_of ( field. did ) . instantiate_identity ( ) . inhabited_predicate ( tcx) ;
Original file line number Diff line number Diff line change 1+ use std:: pin:: Pin ;
2+
3+ enum Void { }
4+
5+ fn demo ( x : Pin < Void > ) {
6+ match x { }
7+ //~^ ERROR non-exhaustive patterns
8+ }
9+
10+ fn main ( ) { }
Original file line number Diff line number Diff line change 1+ error[E0004]: non-exhaustive patterns: type `Pin<Void>` is non-empty
2+ --> $DIR/uninhabited-pin-field.rs:6:11
3+ |
4+ LL | match x {}
5+ | ^
6+ |
7+ note: `Pin<Void>` defined here
8+ --> $SRC_DIR/core/src/pin.rs:LL:COL
9+ = note: the matched value is of type `Pin<Void>`
10+ help: ensure that all possible cases are being handled by adding a match arm with a wildcard pattern as shown
11+ |
12+ LL ~ match x {
13+ LL + _ => todo!(),
14+ LL ~ }
15+ |
16+
17+ error: aborting due to 1 previous error
18+
19+ For more information about this error, try `rustc --explain E0004`.
Original file line number Diff line number Diff line change @@ -14,7 +14,7 @@ help: ensure that all possible cases are being handled by adding a match arm wit
1414 |
1515LL ~ match x {
1616LL + _ => todo!(),
17- LL + }
17+ LL ~ }
1818 |
1919
2020error: aborting due to 1 previous error
You can’t perform that action at this time.
0 commit comments