remove outer Try from whenAll/whenN/whenAny callbacks
authorJames Sedgwick <jsedgwick@fb.com>
Fri, 16 Jan 2015 14:37:21 +0000 (06:37 -0800)
committerwoo <woo@fb.com>
Mon, 2 Feb 2015 21:11:17 +0000 (13:11 -0800)
Summary:
it's redundant and we shouldn't encourage it, so i'm changing all callsites
i changed docs as well

Test Plan: wait for contbuild

Reviewed By: hans@fb.com

Subscribers: trunkagent, fbcode-common-diffs@, hero-diffs@, cold-storage-diffs@, targeting-diff-backend@, adityab, everstore-dev@, zhuohuang, darshan, micha, folly-diffs@, wch, lins, tingy, jsedgwick

FB internal diff: D1784667

Tasks: 5936469

Signature: t1:1784667:1421364620:83169739320e5342d28a744e3689794f16108fea

folly/futures/Future-inl.h
folly/futures/test/FutureTest.cpp

index b45545f9b86cab6c726a18e0670f1a2209dc132b..3b2be169632989f571c41fb4011ae72654bc70c7 100644 (file)
@@ -828,8 +828,8 @@ Future<T> Future<T>::within(Duration dur, E e, Timekeeper* tk) {
 template <class T>
 Future<T> Future<T>::delayed(Duration dur, Timekeeper* tk) {
   return whenAll(*this, futures::sleep(dur, tk))
-    .then([](Try<std::tuple<Try<T>, Try<void>>>&& tup) {
-      Try<T>& t = std::get<0>(tup.value());
+    .then([](std::tuple<Try<T>, Try<void>> tup) {
+      Try<T>& t = std::get<0>(tup);
       return makeFuture<T>(std::move(t));
     });
 }
index 4fa1c27418c9bbba06b91cfa7b00737a74afba90..dbe0b942e8ab9f455e0fe2e2559dd4fcdb887b3a 100644 (file)
@@ -713,8 +713,8 @@ TEST(Future, whenAny) {
       futures.push_back(p.getFuture());
 
     auto anyf = whenAny(futures.begin(), futures.end())
-      .then([](Try<pair<size_t, Try<int>>>&& f) {
-        EXPECT_EQ(42, f.value().second.value());
+      .then([](pair<size_t, Try<int>> p) {
+        EXPECT_EQ(42, p.second.value());
       });
 
     promises[3].setValue(42);
@@ -730,8 +730,8 @@ TEST(when, already_completed) {
       fs.push_back(makeFuture());
 
     whenAll(fs.begin(), fs.end())
-      .then([&](Try<vector<Try<void>>>&& t) {
-        EXPECT_EQ(fs.size(), t.value().size());
+      .then([&](vector<Try<void>> ts) {
+        EXPECT_EQ(fs.size(), ts.size());
       });
   }
   {
@@ -740,8 +740,7 @@ TEST(when, already_completed) {
       fs.push_back(makeFuture(i));
 
     whenAny(fs.begin(), fs.end())
-      .then([&](Try<pair<size_t, Try<int>>>&& t) {
-        auto& p = t.value();
+      .then([&](pair<size_t, Try<int>> p) {
         EXPECT_EQ(p.first, p.second.value());
       });
   }
@@ -757,9 +756,8 @@ TEST(when, whenN) {
   bool flag = false;
   size_t n = 3;
   whenN(futures.begin(), futures.end(), n)
-    .then([&](Try<vector<pair<size_t, Try<void>>>>&& t) {
+    .then([&](vector<pair<size_t, Try<void>>> v) {
       flag = true;
-      auto v = t.value();
       EXPECT_EQ(n, v.size());
       for (auto& tt : v)
         EXPECT_TRUE(tt.second.hasValue());
@@ -808,13 +806,12 @@ TEST(Future, whenAllVariadic) {
   Future<int> fi = pi.getFuture();
   bool flag = false;
   whenAll(std::move(fb), std::move(fi))
-    .then([&](Try<std::tuple<Try<bool>, Try<int>>>&& t) {
+    .then([&](std::tuple<Try<bool>, Try<int>> tup) {
       flag = true;
-      EXPECT_TRUE(t.hasValue());
-      EXPECT_TRUE(std::get<0>(t.value()).hasValue());
-      EXPECT_EQ(std::get<0>(t.value()).value(), true);
-      EXPECT_TRUE(std::get<1>(t.value()).hasValue());
-      EXPECT_EQ(std::get<1>(t.value()).value(), 42);
+      EXPECT_TRUE(std::get<0>(tup).hasValue());
+      EXPECT_EQ(std::get<0>(tup).value(), true);
+      EXPECT_TRUE(std::get<1>(tup).hasValue());
+      EXPECT_EQ(std::get<1>(tup).value(), 42);
     });
   pb.setValue(true);
   EXPECT_FALSE(flag);
@@ -829,13 +826,12 @@ TEST(Future, whenAllVariadicReferences) {
   Future<int> fi = pi.getFuture();
   bool flag = false;
   whenAll(fb, fi)
-    .then([&](Try<std::tuple<Try<bool>, Try<int>>>&& t) {
+    .then([&](std::tuple<Try<bool>, Try<int>> tup) {
       flag = true;
-      EXPECT_TRUE(t.hasValue());
-      EXPECT_TRUE(std::get<0>(t.value()).hasValue());
-      EXPECT_EQ(std::get<0>(t.value()).value(), true);
-      EXPECT_TRUE(std::get<1>(t.value()).hasValue());
-      EXPECT_EQ(std::get<1>(t.value()).value(), 42);
+      EXPECT_TRUE(std::get<0>(tup).hasValue());
+      EXPECT_EQ(std::get<0>(tup).value(), true);
+      EXPECT_TRUE(std::get<1>(tup).hasValue());
+      EXPECT_EQ(std::get<1>(tup).value(), 42);
     });
   pb.setValue(true);
   EXPECT_FALSE(flag);