diff options
| author | bors[bot] <bors[bot]@users.noreply.github.com> | 2018-12-16 18:18:17 +0000 |
|---|---|---|
| committer | bors[bot] <bors[bot]@users.noreply.github.com> | 2018-12-16 18:18:17 +0000 |
| commit | c2fbb2848851e32b78e79ff9e919538b7d5ab8a0 (patch) | |
| tree | cadf6359329573a79e937afcef2972f2cf01f6b4 /tests | |
| parent | 5c458fc115393b93b158b7f6770bc81596d97977 (diff) | |
| parent | d35f5bc0b0453c2e98b8398d36bd2ba553edce45 (diff) | |
Merge #114
114: properly handle conditional compilation r=japaric a=japaric
of resources and tasks
Co-authored-by: Jorge Aparicio <jorge@japaric.io>
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/cfail/cfg-resources.rs | 64 | ||||
| -rw-r--r-- | tests/cfail/cfg-static.rs | 57 | ||||
| -rw-r--r-- | tests/cpass/cfg.rs | 53 |
3 files changed, 174 insertions, 0 deletions
diff --git a/tests/cfail/cfg-resources.rs b/tests/cfail/cfg-resources.rs new file mode 100644 index 0000000..dee1485 --- /dev/null +++ b/tests/cfail/cfg-resources.rs @@ -0,0 +1,64 @@ +#![no_main] +#![no_std] + +extern crate lm3s6965; +extern crate panic_halt; +extern crate rtfm; + +use rtfm::app; + +#[app(device = lm3s6965)] +const APP: () = { + #[cfg(never)] + static mut O1: u32 = 0; // init + #[cfg(never)] + static mut O2: u32 = 0; // idle + #[cfg(never)] + static mut O3: u32 = 0; // EXTI0 + #[cfg(never)] + static O4: u32 = 0; // idle + #[cfg(never)] + static O5: u32 = 0; // EXTI1 + #[cfg(never)] + static O6: u32 = 0; // init + + #[cfg(never)] + static mut S1: u32 = 0; // idle & EXTI0 + #[cfg(never)] + static mut S2: u32 = 0; // EXTI0 & EXTI1 + #[cfg(never)] + static S3: u32 = 0; + + #[init(resources = [O1, O4, O5, O6, S3])] + fn init() { + resources.O1; //~ ERROR no field `O1` + resources.O4; //~ ERROR no field `O4` + resources.O5; //~ ERROR no field `O5` + resources.O6; //~ ERROR no field `O6` + resources.S3; //~ ERROR no field `S3` + } + + #[idle(resources = [O2, O4, S1, S3])] + fn idle() -> ! { + resources.O2; //~ ERROR no field `O2` + resources.O4; //~ ERROR no field `O4` + resources.S1; //~ ERROR no field `S1` + resources.S3; //~ ERROR no field `S3` + + loop {} + } + + #[interrupt(resources = [O3, S1, S2, S3])] + fn UART0() { + resources.O3; //~ ERROR no field `O3` + resources.S1; //~ ERROR no field `S1` + resources.S2; //~ ERROR no field `S2` + resources.S3; //~ ERROR no field `S3` + } + + #[interrupt(resources = [S2, O5])] + fn UART1() { + resources.S2; //~ ERROR no field `S2` + resources.O5; //~ ERROR no field `O5` + } +}; diff --git a/tests/cfail/cfg-static.rs b/tests/cfail/cfg-static.rs new file mode 100644 index 0000000..0d27e53 --- /dev/null +++ b/tests/cfail/cfg-static.rs @@ -0,0 +1,57 @@ +#![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() { + #[cfg(never)] + static mut FOO: u32 = 0; + + FOO; //~ ERROR cannot find value `FOO` in this scope + } + + #[idle] + fn idle() -> ! { + #[cfg(never)] + static mut FOO: u32 = 0; + + FOO; //~ ERROR cannot find value `FOO` in this scope + + loop {} + } + + #[exception] + fn SVCall() { + #[cfg(never)] + static mut FOO: u32 = 0; + + FOO; //~ ERROR cannot find value `FOO` in this scope + } + + #[interrupt] + fn UART0() { + #[cfg(never)] + static mut FOO: u32 = 0; + + FOO; //~ ERROR cannot find value `FOO` in this scope + } + + #[task] + fn foo() { + #[cfg(never)] + static mut FOO: u32 = 0; + + FOO; //~ ERROR cannot find value `FOO` in this scope + } + + extern "C" { + fn UART1(); + } +}; diff --git a/tests/cpass/cfg.rs b/tests/cpass/cfg.rs new file mode 100644 index 0000000..c91ab60 --- /dev/null +++ b/tests/cpass/cfg.rs @@ -0,0 +1,53 @@ +//! Compile-pass test that checks that `#[cfg]` attributes are respected + +#![deny(unsafe_code)] +#![deny(warnings)] +#![no_main] +#![no_std] + +extern crate lm3s6965; +extern crate panic_semihosting; +extern crate rtfm; + +use rtfm::app; + +#[app(device = lm3s6965)] +const APP: () = { + #[cfg(never)] + static mut FOO: u32 = 0; + + #[init] + fn init() { + #[cfg(never)] + static mut BAR: u32 = 0; + } + + #[idle] + fn idle() -> ! { + #[cfg(never)] + static mut BAR: u32 = 0; + + loop {} + } + + #[task(resources = [FOO], schedule = [quux], spawn = [quux])] + fn foo() { + #[cfg(never)] + static mut BAR: u32 = 0; + } + + #[task(priority = 3, resources = [FOO], schedule = [quux], spawn = [quux])] + fn bar() { + #[cfg(never)] + static mut BAR: u32 = 0; + } + + #[cfg(never)] + #[task] + fn quux() {} + + extern "C" { + fn UART0(); + fn UART1(); + } +}; |
