//@ run-pass
//@ needs-unwind

#![allow(unused_must_use)]
#![allow(dead_code)]
#![allow(unused_variables)]
// Test cleanup of rvalue temporary that occurs while `box` construction
// is in progress. This scenario revealed a rather terrible bug.  The
// ingredients are:
//
// 1. Partial cleanup of `box` is in scope,
// 2. cleanup of return value from `get_bar()` is in scope,
// 3. do_it() panics.
//
// This led to a bug because `the top-most frame that was to be
// cleaned (which happens to be the partial cleanup of `box`) required
// multiple basic blocks, which led to us dropping part of the cleanup
// from the top-most frame.
//
// It's unclear how likely such a bug is to recur, but it seems like a
// scenario worth testing.

//@ ignore-emscripten no threads support

use std::thread;

enum Conzabble {
    Bickwick(Foo)
}

struct Foo { field: Box<usize> }

fn do_it(x: &[usize]) -> Foo {
    panic!()
}

fn get_bar(x: usize) -> Vec<usize> { vec![x * 2] }

pub fn fails() {
    let x = 2;
    let mut y: Vec<Box<_>> = Vec::new();
    y.push(Box::new(Conzabble::Bickwick(do_it(&get_bar(x)))));
}

pub fn main() {
    thread::spawn(fails).join();
}
