error[E0308]: mismatched types
  --> $DIR/issue-100605.rs:4:18
   |
LL |     takes_option(&None);
   |     ------------ ^^^^^ expected `Option<&String>`, found `&Option<_>`
   |     |
   |     arguments to this function are incorrect
   |
   = note:   expected enum `Option<&String>`
           found reference `&Option<_>`
note: function defined here
  --> $DIR/issue-100605.rs:1:4
   |
LL | fn takes_option(_arg: Option<&String>) {}
   |    ^^^^^^^^^^^^ ---------------------
help: you can convert from `&Option<T>` to `Option<&T>` using `.as_ref()`
   |
LL |     takes_option(None.as_ref());
   |                  ~~~~~~~~~~~~~
help: consider removing the borrow
   |
LL -     takes_option(&None);
LL +     takes_option(None);
   |

error[E0308]: mismatched types
  --> $DIR/issue-100605.rs:8:18
   |
LL |     takes_option(&res);
   |     ------------ ^^^^
   |     |            |
   |     |            expected `Option<&String>`, found `&Option<String>`
   |     |            help: you can convert from `&Option<T>` to `Option<&T>` using `.as_ref()`: `res.as_ref()`
   |     arguments to this function are incorrect
   |
   = note:   expected enum `Option<&String>`
           found reference `&Option<String>`
note: function defined here
  --> $DIR/issue-100605.rs:1:4
   |
LL | fn takes_option(_arg: Option<&String>) {}
   |    ^^^^^^^^^^^^ ---------------------

error: aborting due to 2 previous errors

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