summaryrefslogtreecommitdiffstats
path: root/src/test/ui/rfc-2632-const-trait-impl/issue-100222.rs
blob: 1004bb28c59e70b6066beda09c3eb9920196c6a2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
// revisions: nn ny yn yy
// check-pass
#![feature(const_trait_impl, associated_type_defaults, const_mut_refs)]

#[cfg_attr(any(yn, yy), const_trait)]
pub trait Index {
    type Output;
}

#[cfg_attr(any(ny, yy), const_trait)]
pub trait IndexMut where Self: Index {
    const C: <Self as Index>::Output;
    type Assoc = <Self as Index>::Output;
    fn foo(&mut self, x: <Self as Index>::Output) -> <Self as Index>::Output;
}

impl Index for () { type Output = (); }

impl const IndexMut for <() as Index>::Output {
    const C: <Self as Index>::Output = ();
    type Assoc = <Self as Index>::Output;
    fn foo(&mut self, x: <Self as Index>::Output) -> <Self as Index>::Output
        where <Self as Index>::Output:,
    {}
}

const C: <() as Index>::Output = ();

fn main() {}