File tree 1 file changed +3
-4
lines changed
1 file changed +3
-4
lines changed Original file line number Diff line number Diff line change @@ -1704,22 +1704,21 @@ impl<'tcx> TyS<'tcx> {
1704
1704
/// will be `Abi::Uninhabited`. (Note that uninhabited types may have nonzero
1705
1705
/// size, to account for partial initialisation. See #49298 for details.)
1706
1706
pub fn conservative_is_privately_uninhabited ( & self , tcx : TyCtxt < ' tcx > ) -> bool {
1707
- // FIXME(varkor): we can make this less conversative by substituting concrete
1708
- // type arguments.
1709
1707
match self . sty {
1710
1708
ty:: Never => true ,
1711
1709
ty:: Adt ( def, _) if def. is_union ( ) => {
1712
1710
// For now, `union`s are never considered uninhabited.
1713
1711
false
1714
1712
}
1715
- ty:: Adt ( def, _ ) => {
1713
+ ty:: Adt ( def, substs ) => {
1716
1714
// Any ADT is uninhabited if either:
1717
1715
// (a) It has no variants (i.e. an empty `enum`);
1718
1716
// (b) Each of its variants (a single one in the case of a `struct`) has at least
1719
1717
// one uninhabited field.
1720
1718
def. variants . iter ( ) . all ( |var| {
1721
1719
var. fields . iter ( ) . any ( |field| {
1722
- tcx. type_of ( field. did ) . conservative_is_privately_uninhabited ( tcx)
1720
+ tcx. type_of ( field. did ) . subst ( tcx, substs)
1721
+ . conservative_is_privately_uninhabited ( tcx)
1723
1722
} )
1724
1723
} )
1725
1724
}
You can’t perform that action at this time.
0 commit comments