diff options
author | Richard Smith <richard-llvm@metafoo.co.uk> | 2013-05-09 21:36:41 +0000 |
---|---|---|
committer | Richard Smith <richard-llvm@metafoo.co.uk> | 2013-05-09 21:36:41 +0000 |
commit | 21b3ab43e1d85a962780916b9f221c813d9d6dcf (patch) | |
tree | d4f91e00e0e3eb7bf2ad68af80917db2116e9333 /clang/test/Parser/cxx0x-lambda-expressions.cpp | |
parent | 8039fdf48c83aa67f4c7de7f93177ccede42e9ad (diff) | |
download | bcm5719-llvm-21b3ab43e1d85a962780916b9f221c813d9d6dcf.tar.gz bcm5719-llvm-21b3ab43e1d85a962780916b9f221c813d9d6dcf.zip |
C++1y n3648: parse and reject init-captures for now.
llvm-svn: 181553
Diffstat (limited to 'clang/test/Parser/cxx0x-lambda-expressions.cpp')
-rw-r--r-- | clang/test/Parser/cxx0x-lambda-expressions.cpp | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/clang/test/Parser/cxx0x-lambda-expressions.cpp b/clang/test/Parser/cxx0x-lambda-expressions.cpp index 642c69a532e..d7dc7d3a473 100644 --- a/clang/test/Parser/cxx0x-lambda-expressions.cpp +++ b/clang/test/Parser/cxx0x-lambda-expressions.cpp @@ -48,4 +48,22 @@ class C { delete [] { return new int; } (); // expected-error{{expected expression}} delete [&] { return new int; } (); // ok, lambda } + + // We support init-captures in C++11 as an extension. + int z; + void init_capture() { + // FIXME: These diagnostics should all disappear once semantic analysis + // for init-captures is complete. + [n(0)] () -> int { return ++n; }; // expected-error {{not supported}} expected-error {{undeclared}} + [n{0}] { return; }; // expected-error {{not supported}} + [n = 0] { return ++n; }; // expected-error {{not supported}} expected-error {{undeclared}} + [n = {0}] { return; }; // expected-error {{not supported}} + [a([&b = z]{})](){}; // expected-error 2{{not supported}} + + int x = 4; // expected-note {{here}} + auto y = [&r = x, x = x + 1]() -> int { // expected-error 2{{not supported}} expected-note {{here}} + r += 2; // expected-error {{undeclared}} + return x + 2; // expected-error {{implicitly captured}} + } (); + } }; |