aboutsummaryrefslogtreecommitdiff
path: root/tests/cfail/resource-not-send-sync.rs
diff options
context:
space:
mode:
authorGravatar homunkulus <homunkulus@gmx.com> 2017-12-09 15:13:42 +0000
committerGravatar homunkulus <homunkulus@gmx.com> 2017-12-09 15:13:42 +0000
commit0f5784c2401d4b12004f34345e721598fa21219a (patch)
tree53fd6aaad6757a60762ec687207ea956cbfede36 /tests/cfail/resource-not-send-sync.rs
parent40ebb93cc6ec8533d4532853c3fd01693af09d8e (diff)
parent62c5c1ae431790e36ffeb0eebba75dfabb5dbd76 (diff)
downloadrtic-0f5784c2401d4b12004f34345e721598fa21219a.tar.gz
rtic-0f5784c2401d4b12004f34345e721598fa21219a.tar.zst
rtic-0f5784c2401d4b12004f34345e721598fa21219a.zip
Auto merge of #57 - japaric:not-sync, r=japaric
make resource proxies not Sync None
Diffstat (limited to 'tests/cfail/resource-not-send-sync.rs')
-rw-r--r--tests/cfail/resource-not-send-sync.rs54
1 files changed, 54 insertions, 0 deletions
diff --git a/tests/cfail/resource-not-send-sync.rs b/tests/cfail/resource-not-send-sync.rs
new file mode 100644
index 00000000..775c78ae
--- /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>(_: &T) where T: Send {}
+fn is_sync<T>(_: &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) {
+}