From 62c5c1ae431790e36ffeb0eebba75dfabb5dbd76 Mon Sep 17 00:00:00 2001 From: Jorge Aparicio Date: Sat, 9 Dec 2017 16:13:22 +0100 Subject: make resource proxies not Sync --- tests/cfail/resource-not-send-sync.rs | 54 +++++++++++++++++++++++++++++++++++ tests/cfail/resource-not-send.rs | 53 ---------------------------------- 2 files changed, 54 insertions(+), 53 deletions(-) create mode 100644 tests/cfail/resource-not-send-sync.rs delete mode 100644 tests/cfail/resource-not-send.rs (limited to 'tests') diff --git a/tests/cfail/resource-not-send-sync.rs b/tests/cfail/resource-not-send-sync.rs new file mode 100644 index 0000000..775c78a --- /dev/null +++ b/tests/cfail/resource-not-send-sync.rs @@ -0,0 +1,54 @@ +#![deny(unsafe_code)] +#![deny(warnings)] +#![feature(const_fn)] +#![feature(proc_macro)] +#![no_std] + +extern crate cortex_m_rtfm as rtfm; +extern crate stm32f103xx; + +use rtfm::{app, Resource, Threshold}; + +app! { + device: stm32f103xx, + + resources: { + static SHARED: bool = false; + }, + + tasks: { + EXTI0: { + path: exti0, + priority: 1, + resources: [SHARED], + }, + + EXTI1: { + path: exti1, + priority: 2, + resources: [SHARED], + }, + }, +} + +fn init(_p: init::Peripherals, _r: init::Resources) {} + +fn idle() -> ! { + loop {} +} + +fn is_send(_: &T) where T: Send {} +fn is_sync(_: &T) where T: Sync {} + +fn exti0(_t: &mut Threshold, r: EXTI0::Resources) { + // ERROR resource proxies can't be shared between tasks + is_sync(&r.SHARED); + //~^ error the trait bound `*const (): core::marker::Sync` is not satisfied + + // ERROR resource proxies are not `Send`able across tasks + is_send(&r.SHARED); + //~^ error the trait bound `*const (): core::marker::Send` is not satisfied +} + +fn exti1(_t: &mut Threshold, _r: EXTI1::Resources) { +} diff --git a/tests/cfail/resource-not-send.rs b/tests/cfail/resource-not-send.rs deleted file mode 100644 index c89c3d3..0000000 --- a/tests/cfail/resource-not-send.rs +++ /dev/null @@ -1,53 +0,0 @@ -#![deny(unsafe_code)] -#![deny(warnings)] -#![feature(const_fn)] -#![feature(proc_macro)] -#![no_std] - -extern crate cortex_m_rtfm as rtfm; -extern crate stm32f103xx; - -use rtfm::{app, Resource, Threshold}; - -app! { - device: stm32f103xx, - - resources: { - static SHARED: bool = false; - }, - - tasks: { - EXTI0: { - path: exti0, - priority: 1, - resources: [SHARED], - }, - - EXTI1: { - path: exti1, - priority: 2, - resources: [SHARED], - }, - }, -} - -fn init(_p: init::Peripherals, _r: init::Resources) {} - -fn idle() -> ! { - loop {} -} - -fn is_send(_: &T) where T: Send {} -fn is_sync(_: &T) where T: Sync {} - -fn exti0(_t: &mut Threshold, r: EXTI0::Resources) { - // OK - is_sync(&r.SHARED); - - // ERROR resource proxies are not `Send`able across tasks - is_send(&r.SHARED); - //~^ error the trait bound `*const (): core::marker::Send` is not satisfied -} - -fn exti1(_t: &mut Threshold, _r: EXTI1::Resources) { -} -- cgit v1.2.3