diff options
| author | Camille GILLOT <gillot.camille@gmail.com> | 2018-11-27 15:15:27 +0100 |
|---|---|---|
| committer | Camille GILLOT <gillot.camille@gmail.com> | 2018-12-30 14:47:12 +0100 |
| commit | 91c155bcd7af54fba0b705de1a2c2d55fa9788fa (patch) | |
| tree | faa8e81cbd77754573b3e28e991e3698b53d5fdd | |
| parent | 2530ce9fa63a756d655b8e0801b4542c74ec4cae (diff) | |
| download | rust-91c155bcd7af54fba0b705de1a2c2d55fa9788fa.tar.gz rust-91c155bcd7af54fba0b705de1a2c2d55fa9788fa.zip | |
Change return types and check return values in tests.
This allows to verify that we handle different types as return types, and that we call the expected functions.
| -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); } |
