| // RUN: %clang_cc1 -fsyntax-only -verify -std=c++11 %s -fblocks |
| |
| void test_nest_lambda() { |
| int x; |
| int y; |
| [&,y]() { |
| int z; |
| #pragma clang __debug captured |
| { |
| x = y; // OK |
| y = z; // expected-error{{cannot assign to a variable captured by copy in a non-mutable lambda}} |
| z = y; // OK |
| } |
| }(); |
| |
| int a; |
| #pragma clang __debug captured |
| { |
| int b; |
| int c; |
| [&,c]() { |
| a = b; // OK |
| b = c; // OK |
| c = a; // expected-error{{cannot assign to a variable captured by copy in a non-mutable lambda}} |
| }(); |
| } |
| } |
| |
| class test_obj_capture { |
| int a; |
| void b(); |
| static void test() { |
| test_obj_capture c; |
| #pragma clang __debug captured |
| { (void)c.a; } // OK |
| #pragma clang __debug captured |
| { c.b(); } // OK |
| } |
| }; |
| |
| class test_this_capture { |
| int a; |
| void b(); |
| void test() { |
| #pragma clang __debug captured |
| { (void)this; } // OK |
| #pragma clang __debug captured |
| { (void)a; } // OK |
| #pragma clang __debug captured |
| { b(); } // OK |
| } |
| }; |