From 9565d48203e0c6f6b5c2fcdb575fa46f81deac78 Mon Sep 17 00:00:00 2001 From: Oliver Schneider Date: Mon, 13 Jun 2016 12:29:01 +0200 Subject: [PATCH] add tests for fn pointers --- tests/compile-fail/deref_fn_ptr.rs | 13 +++++++++++++ tests/compile-fail/execute_memory.rs | 14 ++++++++++++++ 2 files changed, 27 insertions(+) create mode 100644 tests/compile-fail/deref_fn_ptr.rs create mode 100644 tests/compile-fail/execute_memory.rs diff --git a/tests/compile-fail/deref_fn_ptr.rs b/tests/compile-fail/deref_fn_ptr.rs new file mode 100644 index 000000000000..52c7c2b8f9d5 --- /dev/null +++ b/tests/compile-fail/deref_fn_ptr.rs @@ -0,0 +1,13 @@ +#![feature(custom_attribute)] +#![allow(dead_code, unused_attributes)] + +fn f() {} + +#[miri_run] +fn deref_fn_ptr() -> i32 { + unsafe { + *std::mem::transmute::(f) //~ ERROR: tried to dereference a function pointer + } +} + +fn main() {} diff --git a/tests/compile-fail/execute_memory.rs b/tests/compile-fail/execute_memory.rs new file mode 100644 index 000000000000..4e06fd8db8de --- /dev/null +++ b/tests/compile-fail/execute_memory.rs @@ -0,0 +1,14 @@ +#![feature(custom_attribute, box_syntax)] +#![allow(dead_code, unused_attributes)] + +#[miri_run] +fn deref_fn_ptr() { + //FIXME: this span is wrong + let x = box 42; //~ ERROR: tried to treat a memory pointer as a function pointer + unsafe { + let f = std::mem::transmute::, fn()>(x); + f() + } +} + +fn main() {}