Type can be unsized and uninhabited

This commit is contained in:
Seo Sanghyeon 2021-11-13 15:06:22 +09:00
parent e90c5fbbc5
commit 34b75664ee
2 changed files with 22 additions and 1 deletions

View File

@ -512,7 +512,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();
}