summaryrefslogtreecommitdiffstats
path: root/src/test/ui/issues/issue-16739.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/ui/issues/issue-16739.rs')
-rw-r--r--src/test/ui/issues/issue-16739.rs45
1 files changed, 0 insertions, 45 deletions
diff --git a/src/test/ui/issues/issue-16739.rs b/src/test/ui/issues/issue-16739.rs
deleted file mode 100644
index b21ea4bcd..000000000
--- a/src/test/ui/issues/issue-16739.rs
+++ /dev/null
@@ -1,45 +0,0 @@
-// run-pass
-#![feature(unboxed_closures, fn_traits)]
-
-// Test that unboxing shim for calling rust-call ABI methods through a
-// trait box works and does not cause an ICE.
-
-struct Foo { foo: u32 }
-
-impl FnMut<()> for Foo {
- extern "rust-call" fn call_mut(&mut self, _: ()) -> u32 { self.foo }
-}
-
-impl FnOnce<()> for Foo {
- type Output = u32;
- extern "rust-call" fn call_once(mut self, _: ()) -> u32 { self.call_mut(()) }
-}
-
-impl FnMut<(u32,)> for Foo {
- extern "rust-call" fn call_mut(&mut self, (x,): (u32,)) -> u32 { self.foo + x }
-}
-
-impl FnOnce<(u32,)> for Foo {
- type Output = u32;
- extern "rust-call" fn call_once(mut self, args: (u32,)) -> u32 { self.call_mut(args) }
-}
-
-impl FnMut<(u32,u32)> for Foo {
- extern "rust-call" fn call_mut(&mut self, (x, y): (u32, u32)) -> u32 { self.foo + x + y }
-}
-
-impl FnOnce<(u32,u32)> for Foo {
- type Output = u32;
- extern "rust-call" fn call_once(mut self, args: (u32,u32)) -> u32 { self.call_mut(args) }
-}
-
-fn main() {
- let mut f = Box::new(Foo { foo: 42 }) as Box<dyn FnMut() -> u32>;
- assert_eq!(f.call_mut(()), 42);
-
- let mut f = Box::new(Foo { foo: 40 }) as Box<dyn FnMut(u32) -> u32>;
- assert_eq!(f.call_mut((2,)), 42);
-
- let mut f = Box::new(Foo { foo: 40 }) as Box<dyn FnMut(u32, u32) -> u32>;
- assert_eq!(f.call_mut((1, 1)), 42);
-}