error[E0277]: the trait bound `&S: Trait` is not satisfied
  --> $DIR/imm-ref-trait-object-literal.rs:12:7
   |
LL |   foo(&s);
   |   --- ^^ the trait `Trait` is not implemented for `&S`
   |   |
   |   required by a bound introduced by this call
   |
   = help: the following implementations were found:
             <&'a mut S as Trait>
note: required by a bound in `foo`
  --> $DIR/imm-ref-trait-object-literal.rs:7:11
   |
LL | fn foo<X: Trait>(_: X) {}
   |           ^^^^^ required by this bound in `foo`
help: consider changing this borrow's mutability
   |
LL |   foo(&mut s);
   |       ~~~~

error[E0277]: the trait bound `S: Trait` is not satisfied
  --> $DIR/imm-ref-trait-object-literal.rs:13:7
   |
LL |   foo(s);
   |   --- ^ expected an implementor of trait `Trait`
   |   |
   |   required by a bound introduced by this call
   |
note: required by a bound in `foo`
  --> $DIR/imm-ref-trait-object-literal.rs:7:11
   |
LL | fn foo<X: Trait>(_: X) {}
   |           ^^^^^ required by this bound in `foo`
help: consider mutably borrowing here
   |
LL |   foo(&mut s);
   |       ++++

error: aborting due to 2 previous errors

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