//@ ignore-wasm32 FIXME: ignoring wasm as it suggests slightly different impls

// Regression test for #72616, it used to emit incorrect diagnostics, like:
// error[E0283]: type annotations needed for `String`
//  --> src/main.rs:8:30
//   |
// 5 |         let _: String = "".to_owned().try_into().unwrap();
//   |             - consider giving this pattern a type
// ...
// 8 |         if String::from("a") == "a".try_into().unwrap() {}
//   |                              ^^ cannot infer type for struct `String`
//   |
//   = note: cannot satisfy `String: PartialEq<_>`

use std::convert::TryInto;

pub fn main() {
    {
        let _: String = "".to_owned().try_into().unwrap();
    }
    {
        if String::from("a") == "a".try_into().unwrap() {}
        //~^ ERROR type annotations needed
        //~| ERROR type annotations needed
    }
    {
        let _: String = match "_".try_into() {
            Ok(a) => a,
            Err(_) => "".into(),
        };
    }
}
