| // clang-format off | |
| // REQUIRES: lld, x86 | |
| // RUN: %clang_cl --target=x86_64-windows-msvc -Od -GS- -std:c++20 -Z7 -c /Fo%t.obj -- %s | |
| // RUN: lld-link -debug:full -nodefaultlib -entry:main %t.obj -out:%t.exe -pdb:%t.pdb | |
| // RUN: lldb-test symbols --dump-ast %t.exe | FileCheck %s | |
| class Foo { | |
| public: | |
| void fun() { | |
| auto f = [this]() { | |
| int c = a; | |
| int d = b; | |
| return a + b; | |
| }; | |
| f(); | |
| int local = 42; | |
| auto g = [=]() mutable { | |
| return local + 1; | |
| }; | |
| g(); | |
| } | |
| private: | |
| int a = 1; | |
| int b = 2; | |
| }; | |
| int main() { | |
| Foo f; | |
| f.fun(); | |
| return 0; | |
| } | |
| // CHECK: namespace `public: void __cdecl Foo::fun(void)'::`1' { | |
| // CHECK-NEXT: class <lambda_1> { | |
| // CHECK-NEXT: int operator()() const; | |
| // CHECK-NEXT: Foo *__this; | |
| // CHECK-NEXT: }; | |
| // CHECK-NEXT: class <lambda_2> { | |
| // CHECK-NEXT: int operator()(); | |
| // CHECK-NEXT: int local; | |
| // CHECK-NEXT: }; | |
| // CHECK-NEXT: } | |