rust/tests/compile-fail/panic/bad_unwind.rs

17 lines
563 B
Rust
Raw Normal View History

// error-pattern: calling a function with ABI C-unwind using caller ABI C
#![feature(c_unwind)]
//! Unwinding when the caller ABI is "C" (without "-unwind") is UB.
//! Currently we detect the ABI mismatch; we could probably allow such calls in principle one day
//! but then we have to detect the unexpected unwinding.
extern "C-unwind" fn unwind() {
panic!();
}
fn main() {
let unwind: extern "C-unwind" fn() = unwind;
let unwind: extern "C" fn() = unsafe { std::mem::transmute(unwind) };
std::panic::catch_unwind(|| unwind()).unwrap_err();
}