32 lines
892 B
Rust
32 lines
892 B
Rust
|
// compile-flags: -Z mir-opt-level=3
|
||
|
|
||
|
// example from #68867
|
||
|
type CSSFloat = f32;
|
||
|
|
||
|
pub enum ViewportPercentageLength {
|
||
|
Vw(CSSFloat),
|
||
|
Vh(CSSFloat),
|
||
|
Vmin(CSSFloat),
|
||
|
Vmax(CSSFloat),
|
||
|
}
|
||
|
|
||
|
// EMIT_MIR early_otherwise_branch_68867.try_sum.EarlyOtherwiseBranch.diff
|
||
|
#[no_mangle]
|
||
|
pub extern "C" fn try_sum(x: &ViewportPercentageLength,
|
||
|
other: &ViewportPercentageLength)
|
||
|
-> Result<ViewportPercentageLength, ()> {
|
||
|
use self::ViewportPercentageLength::*;
|
||
|
Ok(match (x, other) {
|
||
|
(&Vw(one), &Vw(other)) => Vw(one + other),
|
||
|
(&Vh(one), &Vh(other)) => Vh(one + other),
|
||
|
(&Vmin(one), &Vmin(other)) => Vmin(one + other),
|
||
|
(&Vmax(one), &Vmax(other)) => Vmax(one + other),
|
||
|
_ => return Err(()),
|
||
|
})
|
||
|
}
|
||
|
|
||
|
|
||
|
fn main() {
|
||
|
try_sum(&ViewportPercentageLength::Vw(1.0), &ViewportPercentageLength::Vw(2.0));
|
||
|
}
|