2021-02-23 17:35:48 -06:00
|
|
|
// run-pass
|
2021-08-27 11:04:57 -05:00
|
|
|
#![feature(generic_const_exprs)]
|
2021-02-23 17:35:48 -06:00
|
|
|
#![allow(incomplete_features)]
|
|
|
|
|
2022-10-23 17:32:40 -05:00
|
|
|
// This tests that the inhabited check doesn't cause
|
2021-02-23 17:35:48 -06:00
|
|
|
// ICEs by trying to evaluate `T::ASSOC` with an incorrect `ParamEnv`.
|
|
|
|
|
|
|
|
trait Foo {
|
|
|
|
const ASSOC: usize = 1;
|
|
|
|
}
|
|
|
|
|
2022-07-25 15:36:03 -05:00
|
|
|
#[allow(unused_tuple_struct_fields)]
|
2021-02-23 17:35:48 -06:00
|
|
|
struct Iced<T: Foo>(T, [(); T::ASSOC])
|
|
|
|
where
|
|
|
|
[(); T::ASSOC]: ;
|
|
|
|
|
|
|
|
impl Foo for u32 {}
|
|
|
|
|
|
|
|
fn foo<T: Foo>()
|
|
|
|
where
|
|
|
|
[(); T::ASSOC]: ,
|
|
|
|
{
|
|
|
|
let _iced: Iced<T> = return;
|
|
|
|
}
|
|
|
|
|
|
|
|
fn main() {
|
|
|
|
foo::<u32>();
|
|
|
|
}
|