blob: 920d6eaac82b944a7a3e132f2194bdc32442916e [file] [log] [blame]
// { dg-do run }
// lambda with initialized captures
#include "../coro.h"
// boiler-plate for tests of codegen
#include "../coro1-ret-int-yield-int.h"
int main ()
{
int a_copy = 20;
auto f = [&a_ref = a_copy, a_copy = a_copy + 10]() -> coro1
{
a_ref += 20;
co_return a_ref + a_copy;
};
{
coro1 A = f ();
A.handle.resume();
if (a_copy != 40)
{
PRINT ("main: [a_copy = 40]");
abort ();
}
int y = A.handle.promise().get_value();
if (y != 70)
{
PRINTF ("main: A co-ret = %d, should be 70\n", y);
abort ();
}
}
a_copy = 5;
coro1 B = f ();
B.handle.resume();
if (a_copy != 25)
{
PRINT ("main: [a_copy = 25]");
abort ();
}
int y = B.handle.promise().get_value();
if (y != 55)
{
PRINTF ("main: B co-ret = %d, should be 55\n", y);
abort ();
}
return 0;
}