summaryrefslogtreecommitdiffstats
path: root/src/test/ui/polymorphization/drop_shims/transitive.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/ui/polymorphization/drop_shims/transitive.rs')
-rw-r--r--src/test/ui/polymorphization/drop_shims/transitive.rs27
1 files changed, 27 insertions, 0 deletions
diff --git a/src/test/ui/polymorphization/drop_shims/transitive.rs b/src/test/ui/polymorphization/drop_shims/transitive.rs
new file mode 100644
index 000000000..c22891171
--- /dev/null
+++ b/src/test/ui/polymorphization/drop_shims/transitive.rs
@@ -0,0 +1,27 @@
+// check-pass
+// compile-flags:-Zpolymorphize=on
+
+pub struct OnDrop<F: Fn()>(pub F);
+
+impl<F: Fn()> Drop for OnDrop<F> {
+ fn drop(&mut self) { }
+}
+
+fn bar<F: FnOnce()>(f: F) {
+ let _ = OnDrop(|| ());
+ f()
+}
+
+fn foo<R, S: FnOnce()>(
+ _: R,
+ _: S,
+) {
+ let bar = || {
+ bar(|| {})
+ };
+ let _ = bar();
+}
+
+fn main() {
+ foo(3u32, || {});
+}