about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorCamille GILLOT <gillot.camille@gmail.com>2018-11-27 15:15:27 +0100
committerCamille GILLOT <gillot.camille@gmail.com>2018-12-30 14:47:12 +0100
commit91c155bcd7af54fba0b705de1a2c2d55fa9788fa (patch)
treefaa8e81cbd77754573b3e28e991e3698b53d5fdd /src
parent2530ce9fa63a756d655b8e0801b4542c74ec4cae (diff)
downloadrust-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);
 }