//@ check-pass #![allow(incomplete_features)] #![feature(adt_const_params)] #![feature(generic_const_exprs)] use std::marker::{ConstParamTy, PhantomData}; struct Foo {} const ONE: i32 = 1; const TWO: i32 = 2; impl Foo { pub fn foo() {} } impl Foo { pub fn foo() {} } pub struct Foo2 { _marker: PhantomData, } #[derive(PartialEq, Eq, ConstParamTy)] pub enum Protocol { Variant1, Variant2, } pub trait Bar {} impl Bar for Foo2<{ Protocol::Variant1 }, T> {} impl Bar for Foo2<{ Protocol::Variant2 }, T> {} fn main() {}