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