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 /src | |
| 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.
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); } |
