error[E0308]: mismatched types
  --> $DIR/issue-29084.rs:4:13
   |
LL |         bar(&mut $d);
   |         --- ^^^^^^^ expected `u8`, found `&mut u8`
   |         |
   |         arguments to this function are incorrect
...
LL |     foo!(0u8);
   |     --------- in this macro invocation
   |
note: function defined here
  --> $DIR/issue-29084.rs:3:12
   |
LL |         fn bar(d: u8) { }
   |            ^^^ -----
...
LL |     foo!(0u8);
   |     --------- in this macro invocation
   = note: this error originates in the macro `foo` (in Nightly builds, run with -Z macro-backtrace for more info)

error: aborting due to previous error

For more information about this error, try `rustc --explain E0308`.
