diff --git a/tests/cfail/unsafe-exception.rs b/tests/cfail/unsafe-exception.rs new file mode 100644 index 0000000000..353194a590 --- /dev/null +++ b/tests/cfail/unsafe-exception.rs @@ -0,0 +1,18 @@ +#![no_main] +#![no_std] + +extern crate lm3s6965; +extern crate panic_halt; +extern crate rtfm; + +use rtfm::app; + +#[app(device = lm3s6965)] +const APP: () = { + #[init] + fn init(_: init::Context) {} + + #[exception(binds = SVCall)] + unsafe fn foo(_: foo::Context) {} + //~^ ERROR this `exception` handler must have type signature `fn(foo::Context)` +}; diff --git a/tests/cfail/unsafe-idle.rs b/tests/cfail/unsafe-idle.rs new file mode 100644 index 0000000000..fab1b0f1f6 --- /dev/null +++ b/tests/cfail/unsafe-idle.rs @@ -0,0 +1,20 @@ +#![no_main] +#![no_std] + +extern crate lm3s6965; +extern crate panic_halt; +extern crate rtfm; + +use rtfm::app; + +#[app(device = lm3s6965)] +const APP: () = { + #[init] + fn init(_: init::Context) {} + + #[idle] + unsafe fn idle(_: idle::Context) -> ! { + //~^ ERROR `idle` must have type signature `fn(idle::Context) -> !` + loop {} + } +}; diff --git a/tests/cfail/unsafe-init.rs b/tests/cfail/unsafe-init.rs new file mode 100644 index 0000000000..d8bb560571 --- /dev/null +++ b/tests/cfail/unsafe-init.rs @@ -0,0 +1,15 @@ +#![no_main] +#![no_std] + +extern crate lm3s6965; +extern crate panic_halt; +extern crate rtfm; + +use rtfm::app; + +#[app(device = lm3s6965)] +const APP: () = { + #[init] + unsafe fn init(_: init::Context) {} + //~^ ERROR `init` must have type signature `fn(init::Context) [-> init::LateResources]` +}; diff --git a/tests/cfail/unsafe-interrupt.rs b/tests/cfail/unsafe-interrupt.rs new file mode 100644 index 0000000000..93225edf14 --- /dev/null +++ b/tests/cfail/unsafe-interrupt.rs @@ -0,0 +1,18 @@ +#![no_main] +#![no_std] + +extern crate lm3s6965; +extern crate panic_halt; +extern crate rtfm; + +use rtfm::app; + +#[app(device = lm3s6965)] +const APP: () = { + #[init] + fn init(_: init::Context) {} + + #[interrupt(binds = UART0)] + unsafe fn foo(_: foo::Context) {} + //~^ ERROR this `interrupt` handler must have type signature `fn(foo::Context)` +}; diff --git a/tests/cfail/unsafe-task.rs b/tests/cfail/unsafe-task.rs new file mode 100644 index 0000000000..58c4d70c21 --- /dev/null +++ b/tests/cfail/unsafe-task.rs @@ -0,0 +1,22 @@ +#![no_main] +#![no_std] + +extern crate lm3s6965; +extern crate panic_halt; +extern crate rtfm; + +use rtfm::app; + +#[app(device = lm3s6965)] +const APP: () = { + #[init] + fn init(_: init::Context) {} + + #[task] + unsafe fn foo(_: foo::Context) {} + //~^ ERROR this `task` handler must have type signature `fn(foo::Context, ..)` + + extern "C" { + fn UART0(); + } +};