2021-02-23 23:35:48 +00:00
|
|
|
//@ run-pass
|
2021-08-27 16:04:57 +00:00
|
|
|
#![feature(generic_const_exprs)]
|
2021-02-23 23:35:48 +00:00
|
|
|
#![allow(incomplete_features)]
|
|
|
|
|
2022-10-23 22:32:40 +00:00
|
|
|
// This tests that the inhabited check doesn't cause
|
2021-02-23 23:35:48 +00:00
|
|
|
// ICEs by trying to evaluate `T::ASSOC` with an incorrect `ParamEnv`.
|
|
|
|
|
|
|
|
trait Foo {
|
|
|
|
const ASSOC: usize = 1;
|
|
|
|
}
|
|
|
|
|
2023-12-27 22:11:58 +00:00
|
|
|
#[allow(dead_code)]
|
2021-02-23 23:35:48 +00: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>();
|
|
|
|
}
|