diff --git a/src/test/ui/inference/issue-71732.rs b/src/test/ui/inference/issue-71732.rs
new file mode 100644
index 0000000000000..30063a0957c74
--- /dev/null
+++ b/src/test/ui/inference/issue-71732.rs
@@ -0,0 +1,23 @@
+// Regression test for #71732, it used to emit incorrect diagnostics, like:
+// error[E0283]: type annotations needed
+//  --> src/main.rs:5:10
+//   |
+// 5 |         .get(&"key".into())
+//   |          ^^^ cannot infer type for struct `String`
+//   |
+//   = note: cannot satisfy `String: Borrow<_>`
+// help: consider specifying the type argument in the method call
+//   |
+// 5 |         .get::<Q>(&"key".into())
+//   |
+
+use std::collections::hash_map::HashMap;
+
+fn foo(parameters: &HashMap<String, String>) -> bool {
+    parameters
+        .get(&"key".into()) //~ ERROR: type annotations needed
+        .and_then(|found: &String| Some(false))
+        .unwrap_or(false)
+}
+
+fn main() {}
diff --git a/src/test/ui/inference/issue-71732.stderr b/src/test/ui/inference/issue-71732.stderr
new file mode 100644
index 0000000000000..17fad571385dc
--- /dev/null
+++ b/src/test/ui/inference/issue-71732.stderr
@@ -0,0 +1,13 @@
+error[E0283]: type annotations needed
+  --> $DIR/issue-71732.rs:18:10
+   |
+LL |         .get(&"key".into())
+   |          ^^^  ------------ this method call resolves to `T`
+   |          |
+   |          cannot infer type for type parameter `Q` declared on the associated function `get`
+   |
+   = note: cannot satisfy `String: Borrow<_>`
+
+error: aborting due to previous error
+
+For more information about this error, try `rustc --explain E0283`.
diff --git a/src/test/ui/inference/issue-72616.rs b/src/test/ui/inference/issue-72616.rs
new file mode 100644
index 0000000000000..5e5a3babfe020
--- /dev/null
+++ b/src/test/ui/inference/issue-72616.rs
@@ -0,0 +1,29 @@
+// 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
+    }
+    {
+        let _: String = match "_".try_into() {
+            Ok(a) => a,
+            Err(_) => "".into(),
+        };
+    }
+}
diff --git a/src/test/ui/inference/issue-72616.stderr b/src/test/ui/inference/issue-72616.stderr
new file mode 100644
index 0000000000000..d811988c9c1d0
--- /dev/null
+++ b/src/test/ui/inference/issue-72616.stderr
@@ -0,0 +1,13 @@
+error[E0283]: type annotations needed
+  --> $DIR/issue-72616.rs:20:30
+   |
+LL |         if String::from("a") == "a".try_into().unwrap() {}
+   |                              ^^ -------------- this method call resolves to `std::result::Result<T, <Self as TryInto<T>>::Error>`
+   |                              |
+   |                              cannot infer type
+   |
+   = note: cannot satisfy `String: PartialEq<_>`
+
+error: aborting due to previous error
+
+For more information about this error, try `rustc --explain E0283`.