//@ only-wasm32
//@ compile-flags: -C panic=unwind

#![crate_type = "lib"]
#![feature(core_intrinsics)]
#![feature(rustc_attrs)]

extern {
    fn may_panic();

    #[rustc_nounwind]
    fn log_number(number: usize);
}

struct LogOnDrop;

impl Drop for LogOnDrop {
    fn drop(&mut self) {
        unsafe { log_number(0); }
    }
}

// CHECK-LABEL: @test_cleanup() {{.*}} @__gxx_wasm_personality_v0
#[no_mangle]
pub fn test_cleanup() {
    let _log_on_drop = LogOnDrop;
    unsafe { may_panic(); }

    // CHECK-NOT: call
    // CHECK: invoke void @may_panic()
    // CHECK: %cleanuppad = cleanuppad within none []
}

// CHECK-LABEL: @test_rtry() {{.*}} @__gxx_wasm_personality_v0
#[no_mangle]
pub fn test_rtry() {
    unsafe {
        core::intrinsics::catch_unwind(|_| {
            may_panic();
        }, core::ptr::null_mut(), |data, exception| {
            log_number(data as usize);
            log_number(exception as usize);
        });
    }

    // CHECK-NOT: call
    // CHECK: invoke void @may_panic()
    // CHECK: {{.*}} = catchswitch within none [label {{.*}}] unwind to caller
    // CHECK: {{.*}} = catchpad within {{.*}} [ptr null]
    // CHECK: catchret
}
