1 | // RUN: cp %s %t |
2 | // RUN: %clang_cc1 -x c++ -fsyntax-only -Wunused-lambda-capture -Wno-unused-value -std=c++1z -fixit %t |
3 | // RUN: grep -v CHECK %t | FileCheck %s |
4 | |
5 | void test() { |
6 | int i = 0; |
7 | int j = 0; |
8 | int k = 0; |
9 | int c = 10; |
10 | int a[c]; |
11 | |
12 | [i,j] { return i; }; |
13 | // CHECK: [i] { return i; }; |
14 | [i,j] { return j; }; |
15 | // CHECK: [j] { return j; }; |
16 | [&i,j] { return j; }; |
17 | // CHECK: [j] { return j; }; |
18 | [j,&i] { return j; }; |
19 | // CHECK: [j] { return j; }; |
20 | [i,j,k] {}; |
21 | // CHECK: [] {}; |
22 | [i,j,k] { return i + j; }; |
23 | // CHECK: [i,j] { return i + j; }; |
24 | [i,j,k] { return j + k; }; |
25 | // CHECK: [j,k] { return j + k; }; |
26 | [i,j,k] { return i + k; }; |
27 | // CHECK: [i,k] { return i + k; }; |
28 | [i,j,k] { return i + j + k; }; |
29 | // CHECK: [i,j,k] { return i + j + k; }; |
30 | [&,i] { return k; }; |
31 | // CHECK: [&] { return k; }; |
32 | [=,&i] { return k; }; |
33 | // CHECK: [=] { return k; }; |
34 | [=,&i,&j] { return j; }; |
35 | // CHECK: [=,&j] { return j; }; |
36 | [=,&i,&j] { return i; }; |
37 | // CHECK: [=,&i] { return i; }; |
38 | [z = i] {}; |
39 | // CHECK: [] {}; |
40 | [i,z = i] { return z; }; |
41 | // CHECK: [z = i] { return z; }; |
42 | [z = i,i] { return z; }; |
43 | // CHECK: [z = i] { return z; }; |
44 | [&a] {}; |
45 | // CHECK: [] {}; |
46 | [i,&a] { return i; }; |
47 | // CHECK: [i] { return i; }; |
48 | [&a,i] { return i; }; |
49 | // CHECK: [i] { return i; }; |
50 | |
51 | #define I_MACRO() i |
52 | #define I_REF_MACRO() &i |
53 | [I_MACRO()] {}; |
54 | // CHECK: [] {}; |
55 | [I_MACRO(),j] { return j; }; |
56 | // CHECK: [j] { return j; }; |
57 | [j,I_MACRO()] { return j; }; |
58 | // CHECK: [j] { return j; }; |
59 | [I_REF_MACRO(),j] { return j; }; |
60 | // CHECK: [j] { return j; }; |
61 | [j,I_REF_MACRO()] { return j; }; |
62 | // CHECK: [j] { return j; }; |
63 | |
64 | int n = 0; |
65 | [z = (n = i),j] {}; |
66 | // CHECK: [z = (n = i)] {}; |
67 | [j,z = (n = i)] {}; |
68 | // CHECK: [z = (n = i)] {}; |
69 | } |
70 | |
71 | class ThisTest { |
72 | void test() { |
73 | int i = 0; |
74 | |
75 | [this] {}; |
76 | // CHECK: [] {}; |
77 | [i,this] { return i; }; |
78 | // CHECK: [i] { return i; }; |
79 | [this,i] { return i; }; |
80 | // CHECK: [i] { return i; }; |
81 | [*this] {}; |
82 | // CHECK: [] {}; |
83 | [*this,i] { return i; }; |
84 | // CHECK: [i] { return i; }; |
85 | [i,*this] { return i; }; |
86 | // CHECK: [i] { return i; }; |
87 | [*this] { return this; }; |
88 | // CHECK: [*this] { return this; }; |
89 | [*this,i] { return this; }; |
90 | // CHECK: [*this] { return this; }; |
91 | [i,*this] { return this; }; |
92 | // CHECK: [*this] { return this; }; |
93 | } |
94 | }; |
95 | |