//! Check that overloaded compound assignment operators respect usual borrowck rules and emit
//! reasonable diagnostics.

use std::ops::AddAssign;

#[derive(Clone)]
struct Int(i32);

impl AddAssign for Int {
    fn add_assign(&mut self, _: Int) {
        unimplemented!()
    }
}

fn main() {
    let mut x = Int(1); //~ NOTE binding `x` declared here
    x
    //~^ NOTE borrow of `x` occurs here
    +=
    x;
    //~^ ERROR cannot move out of `x` because it is borrowed
    //~| NOTE move out of `x` occurs here

    let y = Int(2);
    //~^ HELP consider changing this to be mutable
    //~| SUGGESTION mut
    y   //~ ERROR cannot borrow `y` as mutable, as it is not declared as mutable
        //~| NOTE cannot borrow as mutable
    +=
    Int(1);
}
