error: using `.clone()` on a double reference, which returns `&Vec<i32>` instead of cloning the inner type
  --> $DIR/suspicious-double-ref-op.rs:14:23
   |
LL |     let z: &Vec<_> = y.clone();
   |                       ^^^^^^^^
   |
note: the lint level is defined here
  --> $DIR/suspicious-double-ref-op.rs:1:9
   |
LL | #![deny(suspicious_double_ref_op, noop_method_call)]
   |         ^^^^^^^^^^^^^^^^^^^^^^^^

error: using `.clone()` on a double reference, which returns `&CloneType<u32>` instead of cloning the inner type
  --> $DIR/suspicious-double-ref-op.rs:32:63
   |
LL |     let clone_type_ref_clone: &CloneType<u32> = clone_type_ref.clone();
   |                                                               ^^^^^^^^

error: using `.deref()` on a double reference, which returns `&PlainType<u32>` instead of dereferencing the inner type
  --> $DIR/suspicious-double-ref-op.rs:36:63
   |
LL |     let non_deref_type_deref: &PlainType<u32> = non_deref_type.deref();
   |                                                               ^^^^^^^^

error: using `.clone()` on a double reference, which returns `&str` instead of cloning the inner type
  --> $DIR/suspicious-double-ref-op.rs:40:44
   |
LL |     let _v: Vec<&str> = xs.iter().map(|x| x.clone()).collect(); // could use `*x` instead
   |                                            ^^^^^^^^

error: aborting due to 4 previous errors

