diff options
Diffstat (limited to 'cortex-m-rt/tests')
-rw-r--r-- | cortex-m-rt/tests/compile-fail/whitelist-1.rs | 32 | ||||
-rw-r--r-- | cortex-m-rt/tests/compile-fail/whitelist-2.rs | 32 | ||||
-rw-r--r-- | cortex-m-rt/tests/compile-fail/whitelist-3.rs | 32 | ||||
-rw-r--r-- | cortex-m-rt/tests/compile-fail/whitelist-4.rs | 32 | ||||
-rw-r--r-- | cortex-m-rt/tests/compile-fail/whitelist-double-attr.rs | 13 | ||||
-rw-r--r-- | cortex-m-rt/tests/compiletest.rs | 2 |
6 files changed, 142 insertions, 1 deletions
diff --git a/cortex-m-rt/tests/compile-fail/whitelist-1.rs b/cortex-m-rt/tests/compile-fail/whitelist-1.rs new file mode 100644 index 0000000..9c5133b --- /dev/null +++ b/cortex-m-rt/tests/compile-fail/whitelist-1.rs @@ -0,0 +1,32 @@ +#![no_main] +#![no_std] + +extern crate cortex_m_rt; +extern crate panic_halt; + +use cortex_m_rt::{entry, exception, interrupt}; + +#[inline] //~ ERROR this attribute is not allowed on a cortex-m-rt entry point +#[entry] +fn foo() -> ! { + loop {} +} + +#[inline] //~ ERROR this attribute is not allowed on an exception handler controlled by cortex-m-rt +#[exception] +fn SysTick() {} + +#[allow(non_camel_case_types)] +enum interrupt { + USART1, + USART2, +} + +#[inline] //~ ERROR this attribute is not allowed on an interrupt handler controlled by cortex-m-rt +#[interrupt] +fn USART1() {} + +#[cfg(feature = "device")] +#[cfg_attr(feature = "device", inline)] //~ ERROR this attribute is not allowed on an interrupt handler controlled by cortex-m-rt +#[interrupt] +fn USART2() {} diff --git a/cortex-m-rt/tests/compile-fail/whitelist-2.rs b/cortex-m-rt/tests/compile-fail/whitelist-2.rs new file mode 100644 index 0000000..086f909 --- /dev/null +++ b/cortex-m-rt/tests/compile-fail/whitelist-2.rs @@ -0,0 +1,32 @@ +#![no_main] +#![no_std] + +extern crate cortex_m_rt; +extern crate panic_halt; + +use cortex_m_rt::{entry, exception, interrupt}; + +#[export_name = "not_allowed"] //~ ERROR this attribute is not allowed on a cortex-m-rt entry point +#[entry] +fn foo() -> ! { + loop {} +} + +#[export_name = "not_allowed"] //~ ERROR this attribute is not allowed on an exception handler controlled by cortex-m-rt +#[exception] +fn SysTick() {} + +#[allow(non_camel_case_types)] +enum interrupt { + USART1, + USART2, +} + +#[export_name = "not_allowed"] //~ ERROR this attribute is not allowed on an interrupt handler controlled by cortex-m-rt +#[interrupt] +fn USART1() {} + +#[cfg(feature = "device")] +#[cfg_attr(feature = "device", export_name = "not_allowed")] //~ ERROR this attribute is not allowed on an interrupt handler controlled by cortex-m-rt +#[interrupt] +fn USART2() {} diff --git a/cortex-m-rt/tests/compile-fail/whitelist-3.rs b/cortex-m-rt/tests/compile-fail/whitelist-3.rs new file mode 100644 index 0000000..9e5fb33 --- /dev/null +++ b/cortex-m-rt/tests/compile-fail/whitelist-3.rs @@ -0,0 +1,32 @@ +#![no_main] +#![no_std] + +extern crate cortex_m_rt; +extern crate panic_halt; + +use cortex_m_rt::{entry, exception, interrupt}; + +#[no_mangle] //~ ERROR this attribute is not allowed on a cortex-m-rt entry point +#[entry] +fn foo() -> ! { + loop {} +} + +#[no_mangle] //~ ERROR this attribute is not allowed on an exception handler controlled by cortex-m-rt +#[exception] +fn SysTick() {} + +#[allow(non_camel_case_types)] +enum interrupt { + USART1, + USART2, +} + +#[no_mangle] //~ ERROR this attribute is not allowed on an interrupt handler controlled by cortex-m-rt +#[interrupt] +fn USART1() {} + +#[cfg(feature = "device")] +#[cfg_attr(feature = "device", no_mangle)] //~ ERROR this attribute is not allowed on an interrupt handler controlled by cortex-m-rt +#[interrupt] +fn USART2() {} diff --git a/cortex-m-rt/tests/compile-fail/whitelist-4.rs b/cortex-m-rt/tests/compile-fail/whitelist-4.rs new file mode 100644 index 0000000..95dad29 --- /dev/null +++ b/cortex-m-rt/tests/compile-fail/whitelist-4.rs @@ -0,0 +1,32 @@ +#![no_main] +#![no_std] + +extern crate cortex_m_rt; +extern crate panic_halt; + +use cortex_m_rt::{entry, exception, interrupt}; + +#[must_use] //~ ERROR this attribute is not allowed on a cortex-m-rt entry point +#[entry] +fn foo() -> ! { + loop {} +} + +#[must_use] //~ ERROR this attribute is not allowed on an exception handler controlled by cortex-m-rt +#[exception] +fn SysTick() {} + +#[allow(non_camel_case_types)] +enum interrupt { + USART1, + USART2, +} + +#[must_use] //~ ERROR this attribute is not allowed on an interrupt handler controlled by cortex-m-rt +#[interrupt] +fn USART1() {} + +#[cfg(feature = "device")] +#[cfg_attr(feature = "device", must_use)] //~ ERROR this attribute is not allowed on an interrupt handler controlled by cortex-m-rt +#[interrupt] +fn USART2() {} diff --git a/cortex-m-rt/tests/compile-fail/whitelist-double-attr.rs b/cortex-m-rt/tests/compile-fail/whitelist-double-attr.rs new file mode 100644 index 0000000..31da76a --- /dev/null +++ b/cortex-m-rt/tests/compile-fail/whitelist-double-attr.rs @@ -0,0 +1,13 @@ +#![no_main] +#![no_std] + +extern crate cortex_m_rt; +extern crate panic_halt; + +use cortex_m_rt::{entry, exception}; + +#[exception] +#[entry] //~ ERROR this attribute is not allowed on an exception handler +fn SVCall() -> ! { + loop {} +} diff --git a/cortex-m-rt/tests/compiletest.rs b/cortex-m-rt/tests/compiletest.rs index 6cea3ac..82dda07 100644 --- a/cortex-m-rt/tests/compiletest.rs +++ b/cortex-m-rt/tests/compiletest.rs @@ -9,7 +9,7 @@ fn run_mode(mode: &'static str) { config.src_base = PathBuf::from(format!("tests/{}", mode)); // config.link_deps(); // Populate config.target_rustcflags with dependencies on the path config.target_rustcflags = - Some("-L target/debug -L target/debug/deps -C panic=abort".to_owned()); + Some("-L target/debug -L target/debug/deps -C panic=abort --cfg feature=\"device\"".to_owned()); // config.clean_rmeta(); // If your tests import the parent crate, this helps with E0464 compiletest::run_tests(&config); |