97 lines
1.9 KiB
Rust
97 lines
1.9 KiB
Rust
//@ check-pass
|
|
|
|
const _: i32 = if true { 5 } else { 6 };
|
|
|
|
const _: i32 = if let Some(true) = Some(false) { 0 } else { 1 };
|
|
|
|
const _: i32 = match 1 {
|
|
2 => 3,
|
|
4 => 5,
|
|
_ => 0,
|
|
};
|
|
|
|
static FOO: i32 = {
|
|
let x = if true { 0 } else { 1 };
|
|
let x = match x {
|
|
0 => 1,
|
|
_ => 0,
|
|
};
|
|
if let Some(x) = Some(x) { x } else { 1 }
|
|
};
|
|
|
|
static mut BAR: i32 = {
|
|
let x = if true { 0 } else { 1 };
|
|
let x = match x {
|
|
0 => 1,
|
|
_ => 0,
|
|
};
|
|
if let Some(x) = Some(x) { x } else { 1 }
|
|
};
|
|
|
|
const fn if_() -> i32 {
|
|
if true { 5 } else { 6 }
|
|
}
|
|
|
|
const fn if_let(a: Option<bool>) -> i32 {
|
|
if let Some(true) = a { 0 } else { 1 }
|
|
}
|
|
|
|
const fn match_(i: i32) -> i32 {
|
|
match i {
|
|
i if i > 10 => i,
|
|
1 => 2,
|
|
_ => 0,
|
|
}
|
|
}
|
|
|
|
pub trait Foo {
|
|
const IF: i32 = if true { 5 } else { 6 };
|
|
const IF_LET: i32 = if let Some(true) = None { 5 } else { 6 };
|
|
const MATCH: i32 = match 0 {
|
|
1 => 2,
|
|
_ => 0,
|
|
};
|
|
}
|
|
|
|
impl Foo for () {
|
|
const IF: i32 = if true { 5 } else { 6 };
|
|
const IF_LET: i32 = if let Some(true) = None { 5 } else { 6 };
|
|
const MATCH: i32 = match 0 {
|
|
1 => 2,
|
|
_ => 0,
|
|
};
|
|
}
|
|
|
|
fn non_const_outside() {
|
|
const fn const_inside(y: bool) -> i32 {
|
|
let x = if y { 0 } else { 1 };
|
|
let x = match x {
|
|
0 => 1,
|
|
_ => 0,
|
|
};
|
|
if let Some(x) = Some(x) { x } else { 1 }
|
|
}
|
|
}
|
|
|
|
const fn const_outside() {
|
|
fn non_const_inside(y: bool) -> i32 {
|
|
let x = if y { 0 } else { 1 };
|
|
let x = match x {
|
|
0 => 1,
|
|
_ => 0,
|
|
};
|
|
if let Some(x) = Some(x) { x } else { 1 }
|
|
}
|
|
}
|
|
|
|
fn main() {
|
|
let _ = [0; {
|
|
let x = if false { 0 } else { 1 };
|
|
let x = match x {
|
|
0 => 1,
|
|
_ => 0,
|
|
};
|
|
if let Some(x) = Some(x) { x } else { 1 }
|
|
}];
|
|
}
|