aboutsummaryrefslogtreecommitdiff
path: root/test/FixIt/fixit-cxx0x.cpp
diff options
context:
space:
mode:
authorDouglas Gregor <dgregor@apple.com>2012-02-10 17:46:20 +0000
committerDouglas Gregor <dgregor@apple.com>2012-02-10 17:46:20 +0000
commit3ac109cd17151bb8ad3a40b0cbb0e1923cd6c4a0 (patch)
tree914a4d80e3d45b83bfcf9045f4ceb45b9125dae3 /test/FixIt/fixit-cxx0x.cpp
parent67b2c554dc12f589471713b7b01e9c94257ae593 (diff)
Allow implicit capture of 'this' in a lambda even when the capture
default is '=', and reword the warning about explicitly capturing 'this' in such lambdas to indicate that only explicit capture is banned. Introduce Fix-Its for this and other "save the programmer from themself" rules regarding what can be explicitly captured and what must be implicitly captured. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150256 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/FixIt/fixit-cxx0x.cpp')
-rw-r--r--test/FixIt/fixit-cxx0x.cpp12
1 files changed, 12 insertions, 0 deletions
diff --git a/test/FixIt/fixit-cxx0x.cpp b/test/FixIt/fixit-cxx0x.cpp
index 28a96198bd..e642b057a2 100644
--- a/test/FixIt/fixit-cxx0x.cpp
+++ b/test/FixIt/fixit-cxx0x.cpp
@@ -46,3 +46,15 @@ namespace ScopedEnum {
friend enum class E; // expected-error {{must use 'enum' not 'enum class'}}
};
}
+
+struct S2 {
+ void f(int i);
+ void g(int i);
+};
+
+void S2::f(int i) {
+ (void)[&, &i, &i]{}; // expected-error 2{{'&' cannot precede a capture when the capture default is '&'}}
+ (void)[=, this]{ this->g(5); }; // expected-error{{'this' cannot be explicitly captured}}
+ (void)[i, i]{ }; // expected-error{{'i' can appear only once in a capture list}}
+ (void)[&, i, i]{ }; // expected-error{{'i' can appear only once in a capture list}}
+}