error[E0369]: cannot add `&str` to `&str`
  --> $DIR/issue-39018.rs:2:22
   |
LL |     let x = "Hello " + "World!";
   |             -------- ^ -------- &str
   |             |        |
   |             |        `+` cannot be used to concatenate two `&str` strings
   |             &str
   |
help: `to_owned()` can be used to create an owned `String` from a string reference. String concatenation appends the string on the right to the string on the left and may require reallocation. This requires ownership of the string on the left
   |
LL |     let x = "Hello ".to_owned() + "World!";
   |             ^^^^^^^^^^^^^^^^^^^

error[E0369]: cannot add `World` to `World`
  --> $DIR/issue-39018.rs:8:26
   |
LL |     let y = World::Hello + World::Goodbye;
   |             ------------ ^ -------------- World
   |             |
   |             World
   |
   = note: an implementation of `std::ops::Add` might be missing for `World`

error[E0369]: cannot add `std::string::String` to `&str`
  --> $DIR/issue-39018.rs:11:22
   |
LL |     let x = "Hello " + "World!".to_owned();
   |             -------- ^ ------------------- std::string::String
   |             |        |
   |             |        `+` cannot be used to concatenate a `&str` with a `String`
   |             &str
   |
help: `to_owned()` can be used to create an owned `String` from a string reference. String concatenation appends the string on the right to the string on the left and may require reallocation. This requires ownership of the string on the left
   |
LL |     let x = "Hello ".to_owned() + &"World!".to_owned();
   |             ^^^^^^^^^^^^^^^^^^^   ^^^^^^^^^^^^^^^^^^^^

error[E0369]: cannot add `&std::string::String` to `&std::string::String`
  --> $DIR/issue-39018.rs:26:16
   |
LL |     let _ = &a + &b;
   |             -- ^ -- &std::string::String
   |             |  |
   |             |  `+` cannot be used to concatenate two `&str` strings
   |             &std::string::String
   |
help: String concatenation appends the string on the right to the string on the left and may require reallocation. This requires ownership of the string on the left
   |
LL |     let _ = a + &b;
   |             ^

error[E0369]: cannot add `std::string::String` to `&std::string::String`
  --> $DIR/issue-39018.rs:27:16
   |
LL |     let _ = &a + b;
   |             -- ^ - std::string::String
   |             |  |
   |             |  `+` cannot be used to concatenate a `&str` with a `String`
   |             &std::string::String
   |
help: `to_owned()` can be used to create an owned `String` from a string reference. String concatenation appends the string on the right to the string on the left and may require reallocation. This requires ownership of the string on the left
   |
LL |     let _ = a + &b;
   |             ^   ^^

error[E0308]: mismatched types
  --> $DIR/issue-39018.rs:29:17
   |
LL |     let _ = a + b;
   |                 ^
   |                 |
   |                 expected `&str`, found struct `std::string::String`
   |                 help: consider borrowing here: `&b`

error[E0369]: cannot add `std::string::String` to `&std::string::String`
  --> $DIR/issue-39018.rs:30:15
   |
LL |     let _ = e + b;
   |             - ^ - std::string::String
   |             | |
   |             | `+` cannot be used to concatenate a `&str` with a `String`
   |             &std::string::String
   |
help: `to_owned()` can be used to create an owned `String` from a string reference. String concatenation appends the string on the right to the string on the left and may require reallocation. This requires ownership of the string on the left
   |
LL |     let _ = e.to_owned() + &b;
   |             ^^^^^^^^^^^^   ^^

error[E0369]: cannot add `&std::string::String` to `&std::string::String`
  --> $DIR/issue-39018.rs:31:15
   |
LL |     let _ = e + &b;
   |             - ^ -- &std::string::String
   |             | |
   |             | `+` cannot be used to concatenate two `&str` strings
   |             &std::string::String
   |
help: `to_owned()` can be used to create an owned `String` from a string reference. String concatenation appends the string on the right to the string on the left and may require reallocation. This requires ownership of the string on the left
   |
LL |     let _ = e.to_owned() + &b;
   |             ^^^^^^^^^^^^

error[E0369]: cannot add `&str` to `&std::string::String`
  --> $DIR/issue-39018.rs:32:15
   |
LL |     let _ = e + d;
   |             - ^ - &str
   |             | |
   |             | `+` cannot be used to concatenate two `&str` strings
   |             &std::string::String
   |
help: `to_owned()` can be used to create an owned `String` from a string reference. String concatenation appends the string on the right to the string on the left and may require reallocation. This requires ownership of the string on the left
   |
LL |     let _ = e.to_owned() + d;
   |             ^^^^^^^^^^^^

error[E0369]: cannot add `&&str` to `&std::string::String`
  --> $DIR/issue-39018.rs:33:15
   |
LL |     let _ = e + &d;
   |             - ^ -- &&str
   |             | |
   |             | `+` cannot be used to concatenate two `&str` strings
   |             &std::string::String
   |
help: `to_owned()` can be used to create an owned `String` from a string reference. String concatenation appends the string on the right to the string on the left and may require reallocation. This requires ownership of the string on the left
   |
LL |     let _ = e.to_owned() + &d;
   |             ^^^^^^^^^^^^

error[E0369]: cannot add `&&str` to `&&str`
  --> $DIR/issue-39018.rs:34:16
   |
LL |     let _ = &c + &d;
   |             -- ^ -- &&str
   |             |
   |             &&str
   |
   = note: an implementation of `std::ops::Add` might be missing for `&&str`

error[E0369]: cannot add `&str` to `&&str`
  --> $DIR/issue-39018.rs:35:16
   |
LL |     let _ = &c + d;
   |             -- ^ - &str
   |             |
   |             &&str
   |
   = note: an implementation of `std::ops::Add` might be missing for `&&str`

error[E0369]: cannot add `&&str` to `&str`
  --> $DIR/issue-39018.rs:36:15
   |
LL |     let _ = c + &d;
   |             - ^ -- &&str
   |             | |
   |             | `+` cannot be used to concatenate two `&str` strings
   |             &str
   |
help: `to_owned()` can be used to create an owned `String` from a string reference. String concatenation appends the string on the right to the string on the left and may require reallocation. This requires ownership of the string on the left
   |
LL |     let _ = c.to_owned() + &d;
   |             ^^^^^^^^^^^^

error[E0369]: cannot add `&str` to `&str`
  --> $DIR/issue-39018.rs:37:15
   |
LL |     let _ = c + d;
   |             - ^ - &str
   |             | |
   |             | `+` cannot be used to concatenate two `&str` strings
   |             &str
   |
help: `to_owned()` can be used to create an owned `String` from a string reference. String concatenation appends the string on the right to the string on the left and may require reallocation. This requires ownership of the string on the left
   |
LL |     let _ = c.to_owned() + d;
   |             ^^^^^^^^^^^^

error: aborting due to 14 previous errors

Some errors have detailed explanations: E0308, E0369.
For more information about an error, try `rustc --explain E0308`.
