aboutsummaryrefslogtreecommitdiffstats
path: root/tests/compile-fail/handler.rs
diff options
context:
space:
mode:
authorBrian Cully <bjc@kublai.com>2019-05-10 11:50:53 -0400
committerBrian Cully <bjc@kublai.com>2019-06-03 09:23:29 -0400
commit5781e9391fe3d7d3dabec620cb782d38f5f9cb9e (patch)
tree9ed0b09fd40f128733e8441fc63f91a9ee17d3f6 /tests/compile-fail/handler.rs
parentf12811a0a5e15b596a0cc06c095832a6b795172b (diff)
downloadclint-5781e9391fe3d7d3dabec620cb782d38f5f9cb9e.tar.gz
clint-5781e9391fe3d7d3dabec620cb782d38f5f9cb9e.zip
Update to 0.2.0: Add HandlerArray type.v0.2.0
* Create HandlerArray as a safe wrapper around Handler. * Add Cargo features for HandlerArray size. * Move Handler into sub-module. * Add CriticalSection sub-module for architecture dependent support of interrupt-free contexts. * Add build rules to pull in cortex-m support for CriticalSection automatically.
Diffstat (limited to 'tests/compile-fail/handler.rs')
-rw-r--r--tests/compile-fail/handler.rs50
1 files changed, 50 insertions, 0 deletions
diff --git a/tests/compile-fail/handler.rs b/tests/compile-fail/handler.rs
new file mode 100644
index 0000000..fdc464a
--- /dev/null
+++ b/tests/compile-fail/handler.rs
@@ -0,0 +1,50 @@
+extern crate clint;
+
+use clint::Handler;
+
+static mut HANDLER: Handler = Handler::new();
+
+fn main() {
+ need_move();
+ borrow_error();
+ no_borrow_needed();
+}
+
+fn need_move() {
+ let x = vec![1, 2, 3];
+ let c = || {
+ println!("x(h-c): {:?}", x); //~ ERROR does not live long enough
+ };
+ unsafe {
+ HANDLER.replace(&c);
+ HANDLER.call();
+ HANDLER.call();
+ }
+ println!("x(h-o): {:?}", x);
+}
+
+fn borrow_error() {
+ let x = vec![1, 2, 3];
+ let c = move || {
+ println!("x(h-c): {:?}", x);
+ };
+ unsafe {
+ HANDLER.replace(&c);
+ HANDLER.call();
+ HANDLER.call();
+ }
+ println!("x(h-o): {:?}", x); //~ ERROR borrow of moved value
+}
+
+fn no_borrow_needed() {
+ let x = vec![1, 2, 3];
+ let c = || {
+ println!("x(h-c): hi!");
+ };
+ unsafe {
+ HANDLER.replace(&c);
+ HANDLER.call();
+ HANDLER.call();
+ }
+ println!("x(h-o): {:?}", x);
+}