summaryrefslogtreecommitdiffstats
path: root/src/test/ui/impl-trait/impl_fn_associativity.rs
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-17 12:18:25 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-17 12:18:25 +0000
commit5363f350887b1e5b5dd21a86f88c8af9d7fea6da (patch)
tree35ca005eb6e0e9a1ba3bb5dbc033209ad445dc17 /src/test/ui/impl-trait/impl_fn_associativity.rs
parentAdding debian version 1.66.0+dfsg1-1. (diff)
downloadrustc-5363f350887b1e5b5dd21a86f88c8af9d7fea6da.tar.xz
rustc-5363f350887b1e5b5dd21a86f88c8af9d7fea6da.zip
Merging upstream version 1.67.1+dfsg1.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'src/test/ui/impl-trait/impl_fn_associativity.rs')
-rw-r--r--src/test/ui/impl-trait/impl_fn_associativity.rs26
1 files changed, 26 insertions, 0 deletions
diff --git a/src/test/ui/impl-trait/impl_fn_associativity.rs b/src/test/ui/impl-trait/impl_fn_associativity.rs
new file mode 100644
index 000000000..71a8f9c77
--- /dev/null
+++ b/src/test/ui/impl-trait/impl_fn_associativity.rs
@@ -0,0 +1,26 @@
+// run-pass
+#![feature(impl_trait_in_fn_trait_return)]
+use std::fmt::Debug;
+
+fn f_debug() -> impl Fn() -> impl Debug {
+ || ()
+}
+
+fn ff_debug() -> impl Fn() -> impl Fn() -> impl Debug {
+ || f_debug()
+}
+
+fn multi() -> impl Fn() -> (impl Debug + Send) {
+ || ()
+}
+
+fn main() {
+ // Check that `ff_debug` is `() -> (() -> Debug)` and not `(() -> ()) -> Debug`
+ let debug = ff_debug()()();
+ assert_eq!(format!("{:?}", debug), "()");
+
+ let x = multi()();
+ assert_eq!(format!("{:?}", x), "()");
+ fn assert_send(_: &impl Send) {}
+ assert_send(&x);
+}