|  | fn test1() { | 
|  | // In this test the outer 'a loop may terminate without `x` getting initialised. Although the | 
|  | // `x = loop { ... }` statement is reached, the value itself ends up never being computed and | 
|  | // thus leaving `x` uninit. | 
|  | let x: i32; | 
|  | 'a: loop { | 
|  | x = loop { break 'a }; | 
|  | } | 
|  | println!("{:?}", x); //~ ERROR E0381 | 
|  | } | 
|  |  | 
|  | // test2 and test3 should not fail. | 
|  | fn test2() { | 
|  | // In this test the `'a` loop will never terminate thus making the use of `x` unreachable. | 
|  | let x: i32; | 
|  | 'a: loop { | 
|  | x = loop { continue 'a }; | 
|  | } | 
|  | println!("{:?}", x); | 
|  | } | 
|  |  | 
|  | fn test3() { | 
|  | let x: i32; | 
|  | // Similarly, the use of variable `x` is unreachable. | 
|  | 'a: loop { | 
|  | x = loop { return }; | 
|  | } | 
|  | println!("{:?}", x); | 
|  | } | 
|  |  | 
|  | fn main() { | 
|  | } |