remove unreachable cases
`ty::Placeholder` is used by the trait solver and computing its layout was necessary, because the `PointerLike` trait used to be automatically implemented for all types with pointer-like layout. Nowadays, `PointerLike` requires user-written impls and the trait solver no longer computes any layouts, so this can be removed. Unevaluated constants that aren't generic should have caused a const eval error earlier during normalization.
This commit is contained in:
parent
802b7abab7
commit
7a667d206c
1 changed files with 8 additions and 15 deletions
|
@ -155,19 +155,12 @@ fn extract_const_value<'tcx>(
|
||||||
ty::ConstKind::Error(guar) => {
|
ty::ConstKind::Error(guar) => {
|
||||||
return Err(error(cx, LayoutError::ReferencesError(guar)));
|
return Err(error(cx, LayoutError::ReferencesError(guar)));
|
||||||
}
|
}
|
||||||
ty::ConstKind::Param(_) | ty::ConstKind::Expr(_) => {
|
ty::ConstKind::Param(_) | ty::ConstKind::Expr(_) | ty::ConstKind::Unevaluated(_) => {
|
||||||
if !const_.has_param() {
|
if !const_.has_param() {
|
||||||
bug!("no generic type found in the type: {ty:?}");
|
bug!("failed to normalize const, but it is not generic: {const_:?}");
|
||||||
}
|
}
|
||||||
return Err(error(cx, LayoutError::TooGeneric(ty)));
|
return Err(error(cx, LayoutError::TooGeneric(ty)));
|
||||||
}
|
}
|
||||||
ty::ConstKind::Unevaluated(_) => {
|
|
||||||
if !const_.has_param() {
|
|
||||||
return Err(error(cx, LayoutError::Unknown(ty)));
|
|
||||||
} else {
|
|
||||||
return Err(error(cx, LayoutError::TooGeneric(ty)));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
ty::ConstKind::Infer(_) | ty::ConstKind::Bound(..) | ty::ConstKind::Placeholder(_) => {
|
ty::ConstKind::Infer(_) | ty::ConstKind::Bound(..) | ty::ConstKind::Placeholder(_) => {
|
||||||
bug!("unexpected type: {ty:?}");
|
bug!("unexpected type: {ty:?}");
|
||||||
}
|
}
|
||||||
|
@ -728,17 +721,17 @@ fn layout_of_uncached<'tcx>(
|
||||||
return Err(error(cx, LayoutError::Unknown(ty)));
|
return Err(error(cx, LayoutError::Unknown(ty)));
|
||||||
}
|
}
|
||||||
|
|
||||||
ty::Bound(..) | ty::CoroutineWitness(..) | ty::Infer(_) | ty::Error(_) => {
|
ty::Placeholder(..)
|
||||||
bug!("Layout::compute: unexpected type `{}`", ty)
|
| ty::Bound(..)
|
||||||
|
| ty::CoroutineWitness(..)
|
||||||
|
| ty::Infer(_)
|
||||||
|
| ty::Error(_) => {
|
||||||
|
bug!("layout_of: unexpected type `{ty}`")
|
||||||
}
|
}
|
||||||
|
|
||||||
ty::Param(_) => {
|
ty::Param(_) => {
|
||||||
return Err(error(cx, LayoutError::TooGeneric(ty)));
|
return Err(error(cx, LayoutError::TooGeneric(ty)));
|
||||||
}
|
}
|
||||||
|
|
||||||
ty::Placeholder(..) => {
|
|
||||||
return Err(error(cx, LayoutError::Unknown(ty)));
|
|
||||||
}
|
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue