aboutsummaryrefslogtreecommitdiff
path: root/tests/cfail
diff options
context:
space:
mode:
authorJorge Aparicio <jorge@japaric.io>2019-04-16 23:04:24 +0200
committerJorge Aparicio <jorge@japaric.io>2019-04-16 23:04:24 +0200
commitaa7eec02996aca9304187f36d674d5fe898aece6 (patch)
treea6b0769f5b7b92c3d79f1b8b5b788bba0fe46fc3 /tests/cfail
parent8da925647ea1ce47e876526d0bd3d918e782d578 (diff)
check task priority at compile time
before we were checking the priority at runtime. The compile time error message when the priority is too high is kind of awful though.
Diffstat (limited to 'tests/cfail')
-rw-r--r--tests/cfail/priority-too-high.rs22
-rw-r--r--tests/cfail/priority-too-low.rs22
2 files changed, 44 insertions, 0 deletions
diff --git a/tests/cfail/priority-too-high.rs b/tests/cfail/priority-too-high.rs
new file mode 100644
index 0000000..ec32401
--- /dev/null
+++ b/tests/cfail/priority-too-high.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)] //~ error evaluation of constant value failed
+const APP: () = {
+ #[init]
+ fn init() {}
+
+ // OK, this is the maximum priority supported by the device
+ #[interrupt(priority = 8)]
+ fn UART0() {}
+
+ // this value is too high!
+ #[interrupt(priority = 9)]
+ fn UART1() {}
+};
diff --git a/tests/cfail/priority-too-low.rs b/tests/cfail/priority-too-low.rs
new file mode 100644
index 0000000..6dcbfd6
--- /dev/null
+++ b/tests/cfail/priority-too-low.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() {}
+
+ // OK, this is the minimum priority that tasks can have
+ #[interrupt(priority = 1)]
+ fn UART0() {}
+
+ // this value is too low!
+ #[interrupt(priority = 0)] //~ error this literal must be in the range 1...255
+ fn UART1() {}
+};