diff --git a/macros/src/trans.rs b/macros/src/trans.rs
index 39c9c6f5c2708e81032bf0a150a61e050d70ad63..6554dc9fde4ce5e3b7fe36df559bbf4bf6fc680c 100644
--- a/macros/src/trans.rs
+++ b/macros/src/trans.rs
@@ -28,6 +28,9 @@ 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! {
@@ -95,8 +98,9 @@ fn idle(
                         pub #name: &'static mut #ty,
                     });
 
+                    let _name = Ident::new(format!("_{}", name.as_ref()));
                     rexprs.push(quote! {
-                        #name: &mut #super_::#name,
+                        #name: &mut #super_::#_name,
                     });
                 } else {
                     rfields.push(quote! {