diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/test/run-pass/issue-18952.rs (renamed from src/test/ui/issue-18952.rs) | 13 | ||||
| -rw-r--r-- | src/test/run-pass/issue-45510.rs (renamed from src/test/ui/issue-45510.rs) | 16 |
2 files changed, 20 insertions, 9 deletions
diff --git a/src/test/ui/issue-18952.rs b/src/test/run-pass/issue-18952.rs index 08e48c232c9..56378b59e36 100644 --- a/src/test/ui/issue-18952.rs +++ b/src/test/run-pass/issue-18952.rs @@ -9,41 +9,48 @@ struct Foo; impl Fn<(isize, isize)> for Foo { extern "rust-call" fn call(&self, args: (isize, isize)) -> Self::Output { println!("{:?}", args); + (args.0 + 1, args.1 + 1) } } impl FnMut<(isize, isize)> for Foo { extern "rust-call" fn call_mut(&mut self, args: (isize, isize)) -> Self::Output { println!("{:?}", args); + (args.0 + 1, args.1 + 1) } } impl FnOnce<(isize, isize)> for Foo { - type Output = (); + type Output = (isize, isize); extern "rust-call" fn call_once(self, args: (isize, isize)) -> Self::Output { println!("{:?}", args); + (args.0 + 1, args.1 + 1) } } impl Fn<(isize, isize, isize)> for Foo { extern "rust-call" fn call(&self, args: (isize, isize, isize)) -> Self::Output { println!("{:?}", args); + (args.0 + 3, args.1 + 3, args.2 + 3) } } impl FnMut<(isize, isize, isize)> for Foo { extern "rust-call" fn call_mut(&mut self, args: (isize, isize, isize)) -> Self::Output { println!("{:?}", args); + (args.0 + 3, args.1 + 3, args.2 + 3) } } impl FnOnce<(isize, isize, isize)> for Foo { - type Output = (); + type Output = (isize, isize, isize); extern "rust-call" fn call_once(self, args: (isize, isize, isize)) -> Self::Output { println!("{:?}", args); + (args.0 + 3, args.1 + 3, args.2 + 3) } } fn main() { let foo = Foo; - foo(1, 1); + assert_eq!(foo(1, 1), (2, 2)); + assert_eq!(foo(1, 1, 1), (4, 4, 4)); } diff --git a/src/test/ui/issue-45510.rs b/src/test/run-pass/issue-45510.rs index 2fa1ee813c3..9e104ce6c4f 100644 --- a/src/test/ui/issue-45510.rs +++ b/src/test/run-pass/issue-45510.rs @@ -4,25 +4,29 @@ #![feature(fn_traits)] #![feature(unboxed_closures)] +#[derive(Debug, PartialEq, Eq)] struct Ishmael; +#[derive(Debug, PartialEq, Eq)] struct Maybe; struct CallMe; impl FnOnce<(Ishmael,)> for CallMe { - type Output = (); - extern "rust-call" fn call_once(self, _args: (Ishmael,)) -> () { + type Output = Ishmael; + extern "rust-call" fn call_once(self, _args: (Ishmael,)) -> Ishmael { println!("Split your lungs with blood and thunder!"); + Ishmael } } impl FnOnce<(Maybe,)> for CallMe { - type Output = (); - extern "rust-call" fn call_once(self, _args: (Maybe,)) -> () { + type Output = Maybe; + extern "rust-call" fn call_once(self, _args: (Maybe,)) -> Maybe { println!("So we just met, and this is crazy"); + Maybe } } fn main() { - CallMe(Ishmael); - CallMe(Maybe); + assert_eq!(CallMe(Ishmael), Ishmael); + assert_eq!(CallMe(Maybe), Maybe); } |
