const _: () = loop { break (); }; static FOO: i32 = loop { break 4; }; const fn foo() { loop {} } pub trait Foo { const BAR: i32 = loop { break 4; }; } impl Foo for () { const BAR: i32 = loop { break 4; }; } fn non_const_outside() { const fn const_inside() { loop {} } } const fn const_outside() { fn non_const_inside() { loop {} } } fn main() { let x = [0; { while false {} 4 }]; } const _: i32 = { let mut x = 0; while x < 4 { x += 1; } while x < 8 { x += 1; } x }; const _: i32 = { let mut x = 0; for i in 0..4 { //~ ERROR `for` is not allowed in a `const` //~^ ERROR: cannot call //~| ERROR: mutable references //~| ERROR: cannot convert x += i; } for i in 0..4 { //~ ERROR `for` is not allowed in a `const` //~^ ERROR: cannot call //~| ERROR: mutable references //~| ERROR: cannot convert x += i; } x }; const _: i32 = { let mut x = 0; loop { x += 1; if x == 4 { break; } } loop { x += 1; if x == 8 { break; } } x }; const _: i32 = { let mut x = 0; while let None = Some(x) { } while let None = Some(x) { } x };