@@ -6,15 +6,19 @@ void test_default_captures() {
6
6
7
7
auto lambda1 = [=](int x) { return value + x; };
8
8
// CHECK-MESSAGES: :[[@LINE-1]]:19: warning: lambda default captures are discouraged; prefer to capture specific variables explicitly [readability-avoid-default-lambda-capture]
9
+ // CHECK-FIXES: auto lambda1 = [value](int x) { return value + x; };
9
10
10
11
auto lambda2 = [&](int x) { return value + x; };
11
12
// CHECK-MESSAGES: :[[@LINE-1]]:19: warning: lambda default captures are discouraged; prefer to capture specific variables explicitly [readability-avoid-default-lambda-capture]
13
+ // CHECK-FIXES: auto lambda2 = [&value](int x) { return value + x; };
12
14
13
15
auto lambda3 = [=, &another](int x) { return value + another + x; };
14
16
// CHECK-MESSAGES: :[[@LINE-1]]:19: warning: lambda default captures are discouraged; prefer to capture specific variables explicitly [readability-avoid-default-lambda-capture]
17
+ // CHECK-FIXES: auto lambda3 = [&another, value](int x) { return value + another + x; };
15
18
16
19
auto lambda4 = [&, value](int x) { return value + another + x; };
17
20
// CHECK-MESSAGES: :[[@LINE-1]]:19: warning: lambda default captures are discouraged; prefer to capture specific variables explicitly [readability-avoid-default-lambda-capture]
21
+ // CHECK-FIXES: auto lambda4 = [value, &another](int x) { return value + another + x; };
18
22
}
19
23
20
24
void test_acceptable_captures () {
@@ -43,9 +47,11 @@ void test_nested_lambdas() {
43
47
44
48
auto outer = [=]() {
45
49
// CHECK-MESSAGES: :[[@LINE-1]]:17: warning: lambda default captures are discouraged; prefer to capture specific variables explicitly [readability-avoid-default-lambda-capture]
50
+ // CHECK-FIXES: auto outer = [outer_var, middle_var, inner_var]() {
46
51
47
52
auto inner = [&](int x) { return outer_var + middle_var + inner_var + x; };
48
53
// CHECK-MESSAGES: :[[@LINE-1]]:19: warning: lambda default captures are discouraged; prefer to capture specific variables explicitly [readability-avoid-default-lambda-capture]
54
+ // CHECK-FIXES: auto inner = [&outer_var, &middle_var, &inner_var](int x) { return outer_var + middle_var + inner_var + x; };
49
55
50
56
return inner (10 );
51
57
};
@@ -56,14 +62,17 @@ void test_lambda_returns() {
56
62
57
63
auto create_adder = [=](int x) {
58
64
// CHECK-MESSAGES: :[[@LINE-1]]:24: warning: lambda default captures are discouraged; prefer to capture specific variables explicitly [readability-avoid-default-lambda-capture]
65
+ // CHECK-FIXES: auto create_adder = [](int x) {
59
66
return [x](int y) { return x + y; }; // Inner lambda is fine - explicit capture
60
67
};
61
68
62
69
auto func1 = [&]() { return a; };
63
70
// CHECK-MESSAGES: :[[@LINE-1]]:17: warning: lambda default captures are discouraged; prefer to capture specific variables explicitly [readability-avoid-default-lambda-capture]
71
+ // CHECK-FIXES: auto func1 = [&a]() { return a; };
64
72
65
73
auto func2 = [=]() { return b; };
66
74
// CHECK-MESSAGES: :[[@LINE-1]]:17: warning: lambda default captures are discouraged; prefer to capture specific variables explicitly [readability-avoid-default-lambda-capture]
75
+ // CHECK-FIXES: auto func2 = [b]() { return b; };
67
76
}
68
77
69
78
class TestClass {
@@ -75,9 +84,11 @@ class TestClass {
75
84
76
85
auto lambda1 = [=]() { return member + local; };
77
86
// CHECK-MESSAGES: :[[@LINE-1]]:21: warning: lambda default captures are discouraged; prefer to capture specific variables explicitly [readability-avoid-default-lambda-capture]
87
+ // CHECK-FIXES: auto lambda1 = [this, local]() { return member + local; };
78
88
79
89
auto lambda2 = [&]() { return member + local; };
80
90
// CHECK-MESSAGES: :[[@LINE-1]]:21: warning: lambda default captures are discouraged; prefer to capture specific variables explicitly [readability-avoid-default-lambda-capture]
91
+ // CHECK-FIXES: auto lambda2 = [this, &local]() { return member + local; };
81
92
82
93
auto lambda3 = [this , local]() { return member + local; };
83
94
auto lambda4 = [this , &local]() { return member + local; };
@@ -90,6 +101,7 @@ void test_template_lambdas() {
90
101
91
102
auto lambda = [=](T x) { return value + x; };
92
103
// CHECK-MESSAGES: :[[@LINE-1]]:18: warning: lambda default captures are discouraged; prefer to capture specific variables explicitly [readability-avoid-default-lambda-capture]
104
+ // CHECK-FIXES: auto lambda = [](T x) { return value + x; };
93
105
}
94
106
95
107
void instantiate_templates () {
0 commit comments