//@ run-pass
//@ needs-unwind
#![allow(dead_code)]
#![allow(non_upper_case_globals)]

//@ ignore-emscripten no threads support

use std::thread;

static mut dropped: bool = false;

struct A {
    b: B,
}

struct B {
    foo: isize,
}

impl Drop for A {
    fn drop(&mut self) {
        panic!()
    }
}

impl Drop for B {
    fn drop(&mut self) {
        unsafe { dropped = true; }
    }
}

pub fn main() {
    let ret = thread::spawn(move|| {
        let _a = A { b: B { foo: 3 } };
    }).join();
    assert!(ret.is_err());
    unsafe { assert!(dropped); }
}
