1 // This file is @generated by then_compile_test.rb. Do not edit directly.
2 
3 #include <folly/futures/test/ThenCompileTest.h>
4 
5 using namespace folly;
6 
TEST(Basic,thenVariants)7 TEST(Basic, thenVariants) {
8   SomeClass anObject;
9 
10   { Future<B> f = someFuture<A>().then(&aFunction<Future<B>, Try<A>&&>); }
11   {
12     Future<B> f =
13         someFuture<A>().then(&SomeClass::aStaticMethod<Future<B>, Try<A>&&>);
14   }
15   { Future<B> f = someFuture<A>().then(aStdFunction<Future<B>, Try<A>&&>()); }
16   {
17     Future<B> f =
18         someFuture<A>().then([&](Try<A>&&) { return someFuture<B>(); });
19   }
20   { Future<B> f = someFuture<A>().then(&aFunction<Future<B>, Try<A> const&>); }
21   {
22     Future<B> f = someFuture<A>().then(
23         &SomeClass::aStaticMethod<Future<B>, Try<A> const&>);
24   }
25   {
26     Future<B> f =
27         someFuture<A>().then(aStdFunction<Future<B>, Try<A> const&>());
28   }
29   {
30     Future<B> f =
31         someFuture<A>().then([&](Try<A> const&) { return someFuture<B>(); });
32   }
33   { Future<B> f = someFuture<A>().then(&aFunction<Future<B>, Try<A>>); }
34   {
35     Future<B> f =
36         someFuture<A>().then(&SomeClass::aStaticMethod<Future<B>, Try<A>>);
37   }
38   { Future<B> f = someFuture<A>().then(aStdFunction<Future<B>, Try<A>>()); }
39   {
40     Future<B> f = someFuture<A>().then([&](Try<A>) { return someFuture<B>(); });
41   }
42   { Future<B> f = someFuture<A>().then(&aFunction<B, Try<A>&&>); }
43   {
44     Future<B> f = someFuture<A>().then(&SomeClass::aStaticMethod<B, Try<A>&&>);
45   }
46   { Future<B> f = someFuture<A>().then(aStdFunction<B, Try<A>&&>()); }
47   {
48     Future<B> f = someFuture<A>().then([&](Try<A>&&) { return B(); });
49   }
50   { Future<B> f = someFuture<A>().then(&aFunction<B, Try<A> const&>); }
51   {
52     Future<B> f =
53         someFuture<A>().then(&SomeClass::aStaticMethod<B, Try<A> const&>);
54   }
55   { Future<B> f = someFuture<A>().then(aStdFunction<B, Try<A> const&>()); }
56   {
57     Future<B> f = someFuture<A>().then([&](Try<A> const&) { return B(); });
58   }
59   { Future<B> f = someFuture<A>().then(&aFunction<B, Try<A>>); }
60   { Future<B> f = someFuture<A>().then(&SomeClass::aStaticMethod<B, Try<A>>); }
61   { Future<B> f = someFuture<A>().then(aStdFunction<B, Try<A>>()); }
62   {
63     Future<B> f = someFuture<A>().then([&](Try<A>) { return B(); });
64   }
65   { Future<B> f = someFuture<A>().thenValue(&aFunction<Future<B>, A&&>); }
66   {
67     Future<B> f =
68         someFuture<A>().thenValue(&SomeClass::aStaticMethod<Future<B>, A&&>);
69   }
70   { Future<B> f = someFuture<A>().thenValue(aStdFunction<Future<B>, A&&>()); }
71   {
72     Future<B> f =
73         someFuture<A>().thenValue([&](A&&) { return someFuture<B>(); });
74   }
75   { Future<B> f = someFuture<A>().thenValue(&aFunction<Future<B>, A const&>); }
76   {
77     Future<B> f = someFuture<A>().thenValue(
78         &SomeClass::aStaticMethod<Future<B>, A const&>);
79   }
80   {
81     Future<B> f =
82         someFuture<A>().thenValue(aStdFunction<Future<B>, A const&>());
83   }
84   {
85     Future<B> f =
86         someFuture<A>().thenValue([&](A const&) { return someFuture<B>(); });
87   }
88   { Future<B> f = someFuture<A>().thenValue(&aFunction<Future<B>, A>); }
89   {
90     Future<B> f =
91         someFuture<A>().thenValue(&SomeClass::aStaticMethod<Future<B>, A>);
92   }
93   { Future<B> f = someFuture<A>().thenValue(aStdFunction<Future<B>, A>()); }
94   {
95     Future<B> f = someFuture<A>().thenValue([&](A) { return someFuture<B>(); });
96   }
97   { Future<B> f = someFuture<A>().thenValue(&aFunction<B, A&&>); }
98   {
99     Future<B> f = someFuture<A>().thenValue(&SomeClass::aStaticMethod<B, A&&>);
100   }
101   { Future<B> f = someFuture<A>().thenValue(aStdFunction<B, A&&>()); }
102   {
103     Future<B> f = someFuture<A>().thenValue([&](A&&) { return B(); });
104   }
105   { Future<B> f = someFuture<A>().thenValue(&aFunction<B, A const&>); }
106   {
107     Future<B> f =
108         someFuture<A>().thenValue(&SomeClass::aStaticMethod<B, A const&>);
109   }
110   { Future<B> f = someFuture<A>().thenValue(aStdFunction<B, A const&>()); }
111   {
112     Future<B> f = someFuture<A>().thenValue([&](A const&) { return B(); });
113   }
114   { Future<B> f = someFuture<A>().thenValue(&aFunction<B, A>); }
115   { Future<B> f = someFuture<A>().thenValue(&SomeClass::aStaticMethod<B, A>); }
116   { Future<B> f = someFuture<A>().thenValue(aStdFunction<B, A>()); }
117   {
118     Future<B> f = someFuture<A>().thenValue([&](A) { return B(); });
119   }
120   {
121     Future<B> f = someFuture<A>().then(
122         &SomeClass::aMethod<Future<B>, Try<A>&&>, &anObject);
123   }
124   {
125     Future<B> f = someFuture<A>().then(
126         &SomeClass::aMethod<Future<B>, Try<A> const&>, &anObject);
127   }
128   {
129     Future<B> f =
130         someFuture<A>().then(&SomeClass::aMethod<Future<B>, Try<A>>, &anObject);
131   }
132   {
133     Future<B> f =
134         someFuture<A>().then(&SomeClass::aMethod<B, Try<A>&&>, &anObject);
135   }
136   {
137     Future<B> f =
138         someFuture<A>().then(&SomeClass::aMethod<B, Try<A> const&>, &anObject);
139   }
140   {
141     Future<B> f =
142         someFuture<A>().then(&SomeClass::aMethod<B, Try<A>>, &anObject);
143   }
144 }
145