summaryrefslogtreecommitdiffstats
path: root/src/test/ui/mir/mir-inlining/ice-issue-45885.rs
blob: 09b1279ef34e1e87da756c35722f7b4867e50fa2 (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
// run-pass
// compile-flags:-Zmir-opt-level=3

pub enum Enum {
    A,
    B,
}

trait SliceIndex {
    type Output;
    fn get(&self) -> &Self::Output;
}

impl SliceIndex for usize {
    type Output = Enum;
    #[inline(never)]
    fn get(&self) -> &Enum {
        &Enum::A
    }
}

#[inline(always)]
fn index<T: SliceIndex>(t: &T) -> &T::Output {
    t.get()
}

fn main() {
    match *index(&0) { Enum::A => true, _ => false };
}