about summary refs log tree commit diff
diff options
context:
space:
mode:
authorYuki Okushi <huyuumi.dev@gmail.com>2020-10-23 16:22:11 +0900
committerYuki Okushi <huyuumi.dev@gmail.com>2020-10-23 16:41:34 +0900
commit98e13169ad9ca564def675ca61f7c072d399cb0d (patch)
tree240595687bbcafde7d804161ddfdf84fd81c61a2
parent5b32c84952a5d734839a486d77f07dfe995bcae7 (diff)
downloadrust-98e13169ad9ca564def675ca61f7c072d399cb0d.tar.gz
rust-98e13169ad9ca564def675ca61f7c072d399cb0d.zip
Add regression test for issue-71732
-rw-r--r--src/test/ui/inference/issue-71732.rs23
-rw-r--r--src/test/ui/inference/issue-71732.stderr13
2 files changed, 36 insertions, 0 deletions
diff --git a/src/test/ui/inference/issue-71732.rs b/src/test/ui/inference/issue-71732.rs
new file mode 100644
index 00000000000..30063a0957c
--- /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 00000000000..17fad571385
--- /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`.