3 #![allow(non_snake_case)]
5 #![allow(unused_variables)]
6 // Test that the lifetime of rvalues in for loops is extended
7 // to the for loop itself.
11 static mut FLAGS: u64 = 0;
13 struct Box<T> { f: T }
14 struct AddFlags { bits: u64 }
16 fn AddFlags(bits: u64) -> AddFlags {
17 AddFlags { bits: bits }
20 fn arg(exp: u64, _x: &AddFlags) {
24 fn pass<T>(v: T) -> T {
28 fn check_flags(exp: u64) {
32 println!("flags {}, expected {}", x, exp);
38 fn check_flags(&self, exp: u64) -> &AddFlags {
43 fn bits(&self) -> u64 {
48 impl Drop for AddFlags {
51 FLAGS = FLAGS + self.bits;
57 // The array containing [AddFlags] should not be dropped until
58 // after the for loop:
59 for x in &[AddFlags(1)] {