1 //  { dg-do run }
2 
3 // lambda with parm and local state
4 
5 #include "../coro.h"
6 
7 // boiler-plate for tests of codegen
8 #include "../coro1-ret-int-yield-int.h"
9 
main()10 int main ()
11 {
12   int a_copy = 20;
13   int a_ref = 10;
14 
15   auto f = [&, a_copy]() -> coro1
16   {
17     co_return a_ref + a_copy;
18   };
19 
20   {
21     coro1 A = f ();
22     A.handle.resume();
23     PRINT ("main: [a_copy = 20, a_ref = 10]");
24 
25     int y = A.handle.promise().get_value();
26     if (y != 30)
27       {
28 	PRINTF ("main: A co-ret = %d, should be 30\n", y);
29 	abort ();
30       }
31   }
32 
33   a_copy = 5;
34   a_ref = 7;
35 
36   coro1 B = f ();
37   B.handle.resume();
38   PRINT ("main: [a_copy = 5, a_ref = 7]");
39 
40   int y = B.handle.promise().get_value();
41   if (y != 27)
42     {
43       PRINTF ("main: B co-ret = %d, should be 27\n", y);
44       abort ();
45     }
46 
47   return 0;
48 }
49