diff options
author | dim <dim@FreeBSD.org> | 2013-04-08 18:45:10 +0000 |
---|---|---|
committer | dim <dim@FreeBSD.org> | 2013-04-08 18:45:10 +0000 |
commit | c72c57c9e9b69944e3e009cd5e209634839581d3 (patch) | |
tree | 4fc2f184c499d106f29a386c452b49e5197bf63d /test/Parser/cxx0x-ambig.cpp | |
parent | 5b20025c30d23d521e12c1f33ec8fa6b821952cd (diff) | |
download | FreeBSD-src-c72c57c9e9b69944e3e009cd5e209634839581d3.zip FreeBSD-src-c72c57c9e9b69944e3e009cd5e209634839581d3.tar.gz |
Vendor import of clang trunk r178860:
http://llvm.org/svn/llvm-project/cfe/trunk@178860
Diffstat (limited to 'test/Parser/cxx0x-ambig.cpp')
-rw-r--r-- | test/Parser/cxx0x-ambig.cpp | 24 |
1 files changed, 23 insertions, 1 deletions
diff --git a/test/Parser/cxx0x-ambig.cpp b/test/Parser/cxx0x-ambig.cpp index 96e2006..3b864f9 100644 --- a/test/Parser/cxx0x-ambig.cpp +++ b/test/Parser/cxx0x-ambig.cpp @@ -25,6 +25,9 @@ namespace final { struct T final : S {}; // expected-error {{base 'S' is marked 'final'}} struct T bar : S {}; // expected-error {{expected ';' after top level declarator}} expected-error {{expected unqualified-id}} } + // _Alignas isn't allowed in the places where alignas is. We used to + // assert on this. + struct U final _Alignas(4) {}; // expected-error 3{{}} expected-note {{}} } // enum versus bitfield mess. @@ -110,7 +113,7 @@ namespace ellipsis { void f(S(...args[sizeof(T)])); // expected-note {{here}} void f(S(...args)[sizeof(T)]); // expected-error {{redeclared}} expected-note {{here}} void f(S ...args[sizeof(T)]); // expected-error {{redeclared}} - void g(S(...[sizeof(T)])); // expected-note {{here}} + void g(S(...[sizeof(T)])); // expected-note {{here}} expected-warning {{ISO C++11 requires a parenthesized pack declaration to have a name}} void g(S(...)[sizeof(T)]); // expected-error {{function cannot return array type}} void g(S ...[sizeof(T)]); // expected-error {{redeclared}} void h(T(...)); // function type, expected-error {{unexpanded parameter pack}} @@ -125,5 +128,24 @@ namespace ellipsis { void j(T(T...)); // expected-error {{unexpanded parameter pack}} void k(int(...)(T)); // expected-error {{cannot return function type}} void k(int ...(T)); + void l(int(&...)(T)); // expected-warning {{ISO C++11 requires a parenthesized pack declaration to have a name}} + void l(int(*...)(T)); // expected-warning {{ISO C++11 requires a parenthesized pack declaration to have a name}} + void l(int(S<int>::*...)(T)); // expected-warning {{ISO C++11 requires a parenthesized pack declaration to have a name}} }; } + +namespace braced_init_list { + struct X { + void foo() {} + }; + + void (*pf1)() {}; + void (X::*pmf1)() {&X::foo}; + void (X::*pmf2)() = {&X::foo}; + + void test() { + void (*pf2)() {}; + void (X::*pmf3)() {&X::foo}; + void (X::*pmf4)() = {&X::foo}; + } +} |