do not ICE on ty::Bound
in Layout::compute
This commit is contained in:
parent
2a00dda902
commit
6734230425
@ -1259,11 +1259,11 @@ impl<'tcx> LayoutCx<'tcx, TyCtxt<'tcx>> {
|
||||
tcx.layout_raw(param_env.and(normalized))?
|
||||
}
|
||||
|
||||
ty::Bound(..) | ty::Placeholder(..) | ty::GeneratorWitness(..) | ty::Infer(_) => {
|
||||
ty::Placeholder(..) | ty::GeneratorWitness(..) | ty::Infer(_) => {
|
||||
bug!("Layout::compute: unexpected type `{}`", ty)
|
||||
}
|
||||
|
||||
ty::Param(_) | ty::Error(_) => {
|
||||
ty::Bound(..) | ty::Param(_) | ty::Error(_) => {
|
||||
return Err(LayoutError::Unknown(ty));
|
||||
}
|
||||
})
|
||||
|
18
src/test/ui/const-generics/issues/issue-76595.rs
Normal file
18
src/test/ui/const-generics/issues/issue-76595.rs
Normal file
@ -0,0 +1,18 @@
|
||||
#![feature(const_generics, const_evaluatable_checked)]
|
||||
#![allow(incomplete_features)]
|
||||
|
||||
struct Bool<const B: bool>;
|
||||
|
||||
trait True {}
|
||||
|
||||
impl True for Bool<true> {}
|
||||
|
||||
fn test<T, const P: usize>() where Bool<{core::mem::size_of::<T>() > 4}>: True {
|
||||
todo!()
|
||||
}
|
||||
|
||||
fn main() {
|
||||
test::<2>();
|
||||
//~^ ERROR wrong number of type
|
||||
//~| ERROR constant expression depends
|
||||
}
|
21
src/test/ui/const-generics/issues/issue-76595.stderr
Normal file
21
src/test/ui/const-generics/issues/issue-76595.stderr
Normal file
@ -0,0 +1,21 @@
|
||||
error[E0107]: wrong number of type arguments: expected 1, found 0
|
||||
--> $DIR/issue-76595.rs:15:5
|
||||
|
|
||||
LL | test::<2>();
|
||||
| ^^^^^^^^^ expected 1 type argument
|
||||
|
||||
error: constant expression depends on a generic parameter
|
||||
--> $DIR/issue-76595.rs:15:5
|
||||
|
|
||||
LL | fn test<T, const P: usize>() where Bool<{core::mem::size_of::<T>() > 4}>: True {
|
||||
| ---- required by a bound in this
|
||||
...
|
||||
LL | test::<2>();
|
||||
| ^^^^^^^^^
|
||||
|
|
||||
= note: this may fail depending on what value the parameter takes
|
||||
= note: required by this bound in `test`
|
||||
|
||||
error: aborting due to 2 previous errors
|
||||
|
||||
For more information about this error, try `rustc --explain E0107`.
|
Loading…
Reference in New Issue
Block a user