summaryrefslogtreecommitdiffstats
path: root/src/test/ui/closure-expected-type/expect-fn-supply-fn-multiple.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/ui/closure-expected-type/expect-fn-supply-fn-multiple.rs')
-rw-r--r--src/test/ui/closure-expected-type/expect-fn-supply-fn-multiple.rs38
1 files changed, 38 insertions, 0 deletions
diff --git a/src/test/ui/closure-expected-type/expect-fn-supply-fn-multiple.rs b/src/test/ui/closure-expected-type/expect-fn-supply-fn-multiple.rs
new file mode 100644
index 000000000..5f02e642d
--- /dev/null
+++ b/src/test/ui/closure-expected-type/expect-fn-supply-fn-multiple.rs
@@ -0,0 +1,38 @@
+// build-pass (FIXME(62277): could be check-pass?)
+
+#![allow(warnings)]
+
+type Different<'a, 'b> = &'a mut (&'a (), &'b ());
+type Same<'a> = Different<'a, 'a>;
+
+fn with_closure_expecting_different<F>(_: F)
+ where F: for<'a, 'b> FnOnce(Different<'a, 'b>)
+{
+}
+
+fn with_closure_expecting_different_anon<F>(_: F)
+ where F: FnOnce(Different<'_, '_>)
+{
+}
+
+fn supplying_nothing_expecting_anon() {
+ with_closure_expecting_different_anon(|x: Different| {
+ })
+}
+
+fn supplying_nothing_expecting_named() {
+ with_closure_expecting_different(|x: Different| {
+ })
+}
+
+fn supplying_underscore_expecting_anon() {
+ with_closure_expecting_different_anon(|x: Different<'_, '_>| {
+ })
+}
+
+fn supplying_underscore_expecting_named() {
+ with_closure_expecting_different(|x: Different<'_, '_>| {
+ })
+}
+
+fn main() { }