#[derive(Copy, Clone)]
struct HasChars;

impl HasChars {
    fn chars(self) -> std::str::Chars<'static> {
        "HasChars".chars()
    }
}

fn main() {
    let abc = "abc";
    let def = String::from("def");
    let mut s = String::new();

    s.push_str(abc);
    s.push_str(abc);
    //~^ string_extend_chars

    s.push_str("abc");
    s.push_str("abc");
    //~^ string_extend_chars

    s.push_str(&def);
    s.push_str(&def);
    //~^ string_extend_chars

    s.extend(abc.chars().skip(1));
    s.extend("abc".chars().skip(1));
    s.extend(['a', 'b', 'c'].iter());

    let f = HasChars;
    s.extend(f.chars());

    // issue #9735
    s.push_str(&abc[0..2]);
    //~^ string_extend_chars
}
