aboutsummaryrefslogtreecommitdiff
path: root/tests/cfail/tasks-wrong-ceiling.rs
diff options
context:
space:
mode:
authorJorge Aparicio <jorge@japaric.io>2017-04-27 19:06:22 -0500
committerJorge Aparicio <jorge@japaric.io>2017-04-27 19:28:27 -0500
commite2bde8d21acdfb845554d960536bfb94a7bb1f86 (patch)
treee44c57d9f018039fda1a0845b8d5a6310903725b /tests/cfail/tasks-wrong-ceiling.rs
parentec2df608ca4c35f044c383b7a4c8ba268657aa15 (diff)
make the ceiling part of the task signature
remove the P.as_ceiling method
Diffstat (limited to 'tests/cfail/tasks-wrong-ceiling.rs')
-rw-r--r--tests/cfail/tasks-wrong-ceiling.rs91
1 files changed, 91 insertions, 0 deletions
diff --git a/tests/cfail/tasks-wrong-ceiling.rs b/tests/cfail/tasks-wrong-ceiling.rs
new file mode 100644
index 0000000..84dd133
--- /dev/null
+++ b/tests/cfail/tasks-wrong-ceiling.rs
@@ -0,0 +1,91 @@
+// error-pattern: mismatched types
+
+#![feature(used)]
+
+#[macro_use]
+extern crate cortex_m_rtfm as rtfm;
+
+use rtfm::{C0, C1, C16, C2, P0, P1};
+use device::interrupt::Exti0;
+
+tasks!(device, {
+ j1: Task {
+ interrupt: Exti0,
+ priority: P1,
+ enabled: true,
+ },
+});
+
+fn init(_: P0, _: &C16) {}
+
+fn idle(_: P0, _: C0) -> ! {
+ loop {}
+}
+
+// Wrong ceiling token. `prio` and `ceil` must match in levels
+fn j1(_task: Exti0, _prio: P1, _ceil: C2) {}
+
+// fake device crate
+extern crate core;
+extern crate cortex_m;
+
+mod device {
+ pub mod interrupt {
+ use cortex_m::ctxt::Context;
+ use cortex_m::interrupt::Nr;
+
+ extern "C" fn default_handler<T>(_: T) {}
+
+ pub struct Handlers {
+ pub Exti0: extern "C" fn(Exti0),
+ pub Exti1: extern "C" fn(Exti1),
+ pub Exti2: extern "C" fn(Exti2),
+ }
+
+ pub struct Exti0;
+ pub struct Exti1;
+ pub struct Exti2;
+
+ pub enum Interrupt {
+ Exti0,
+ Exti1,
+ Exti2,
+ }
+
+ unsafe impl Nr for Interrupt {
+ fn nr(&self) -> u8 {
+ 0
+ }
+ }
+
+ unsafe impl Context for Exti0 {}
+
+ unsafe impl Nr for Exti0 {
+ fn nr(&self) -> u8 {
+ 0
+ }
+ }
+
+ unsafe impl Context for Exti1 {}
+
+ unsafe impl Nr for Exti1 {
+ fn nr(&self) -> u8 {
+ 0
+ }
+ }
+
+ unsafe impl Context for Exti2 {}
+
+ unsafe impl Nr for Exti2 {
+ fn nr(&self) -> u8 {
+ 0
+ }
+ }
+
+ pub const DEFAULT_HANDLERS: Handlers = Handlers {
+ Exti0: default_handler,
+ Exti1: default_handler,
+ Exti2: default_handler,
+ };
+ }
+}