diff options
Diffstat (limited to 'tests/ui/mir/mir-inlining/ice-issue-45885.rs')
-rw-r--r-- | tests/ui/mir/mir-inlining/ice-issue-45885.rs | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/tests/ui/mir/mir-inlining/ice-issue-45885.rs b/tests/ui/mir/mir-inlining/ice-issue-45885.rs new file mode 100644 index 000000000..09b1279ef --- /dev/null +++ b/tests/ui/mir/mir-inlining/ice-issue-45885.rs @@ -0,0 +1,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 }; +} |