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

// Test that if a slicing expr[..] fails, the correct cleanups happen.

// FIXME(static_mut_refs): this could use an atomic
#![allow(static_mut_refs)]

use std::thread;

struct Foo;

static mut DTOR_COUNT: isize = 0;

impl Drop for Foo {
    fn drop(&mut self) { unsafe { DTOR_COUNT += 1; } }
}

fn bar() -> usize {
    panic!();
}

fn foo() {
    let x: &[_] = &[Foo, Foo];
    let _ = &x[3..bar()];
}

fn main() {
    let _ = thread::spawn(move|| foo()).join();
    unsafe { assert_eq!(DTOR_COUNT, 2); }
}
