diff --git a/macros/src/trans.rs b/macros/src/trans.rs
index a6dcf8abed5644e6ee930dfe464aebf3b48365cd..c65aaa522e1d0c52a0ff7879589746d4c35ecf90 100644
--- a/macros/src/trans.rs
+++ b/macros/src/trans.rs
@@ -12,7 +12,6 @@ pub fn app(app: &App, ownerships: &Ownerships) -> Tokens {
     let mut root = vec![];
     let mut main = vec![];
 
-    ::trans::check(app, &mut main);
     ::trans::init(app, &mut main, &mut root);
     ::trans::idle(app, ownerships, &mut main, &mut root);
     ::trans::resources(app, ownerships, &mut root);
@@ -28,25 +27,6 @@ pub fn app(app: &App, ownerships: &Ownerships) -> Tokens {
     quote!(#(#root)*)
 }
 
-// Checks that the resource types are valid
-// Sadly we can't do this test at expansion time. Instead we'll generate some
-// code that won't compile if the types don't meet the requirements
-fn check(app: &App, main: &mut Vec<Tokens>) {
-    if !app.resources.is_empty() {
-        main.push(quote! {
-            fn is_send<T>() where T: Send {}
-        });
-    }
-
-    for resource in app.resources.values() {
-        let ty = &resource.ty;
-
-        main.push(quote! {
-            is_send::<#ty>();
-        });
-    }
-}
-
 fn idle(
     app: &App,
     ownerships: &Ownerships,
diff --git a/tests/cfail/interrupt.rs b/tests/cfail/interrupt.rs
index c70528f0def1714d82273c66ce6bb07c46c05eca..f7879f493cbf55f3c531a08fe3f6623ed3b25812 100644
--- a/tests/cfail/interrupt.rs
+++ b/tests/cfail/interrupt.rs
@@ -14,7 +14,9 @@ app! {
 
     tasks: {
         // ERROR this interrupt doesn't exist
-        EXTI33: {},
+        EXTI33: {
+            path: exti33,
+        },
     },
 }
 
@@ -23,3 +25,5 @@ fn init(_p: init::Peripherals) {}
 fn idle() -> ! {
     loop {}
 }
+
+fn exti33() {}
diff --git a/tests/cfail/token-transfer.rs b/tests/cfail/token-transfer.rs
index d10b82b24c9665e5a6df1a63155717504c625a2d..38e878683b7af1aef963f1a03ef6fa9b3e683a54 100644
--- a/tests/cfail/token-transfer.rs
+++ b/tests/cfail/token-transfer.rs
@@ -15,10 +15,13 @@ app! { //~ error bound `rtfm::Threshold: core::marker::Send` is not satisfied
         static TOKEN: Option<Threshold> = None;
     },
 
+    idle: {
+        resources: [TOKEN],
+    },
+
     tasks: {
         EXTI0: {
             path: exti0,
-            priority: 1,
             resources: [TOKEN],
         },
     }
@@ -26,7 +29,7 @@ app! { //~ error bound `rtfm::Threshold: core::marker::Send` is not satisfied
 
 fn init(_p: init::Peripherals, _r: init::Resources) {}
 
-fn idle() -> ! {
+fn idle(_t: &mut Threshold, _r: idle::Resources) -> ! {
     loop {}
 }