Rollup merge of #90854 - sanxiyn:unsized-and-uninhabited, r=estebank

Type can be unsized and uninhabited

Fix #88150.
This commit is contained in:
Matthias Krüger 2021-12-03 06:24:12 +01:00 committed by GitHub
commit 570dc70a2b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 22 additions and 1 deletions

View File

@ -533,7 +533,7 @@ impl<'tcx> LayoutCx<'tcx, TyCtxt<'tcx>> {
}
}
if sized && fields.iter().any(|f| f.abi.is_uninhabited()) {
if fields.iter().any(|f| f.abi.is_uninhabited()) {
abi = Abi::Uninhabited;
}

View File

@ -0,0 +1,21 @@
// run-pass
// compile-flags:-C debuginfo=2
// edition:2018
use core::marker::PhantomData;
pub struct Foo<T: ?Sized, A>(
PhantomData<(A, T)>,
);
enum Never {}
impl<T: ?Sized> Foo<T, Never> {
fn new_foo() -> Foo<T, Never> {
Foo(PhantomData)
}
}
fn main() {
let _ = Foo::<[()], Never>::new_foo();
}