1 // RUN: %clang_cc1 -verify -fsyntax-only -std=c++11 -pedantic %s 2 3 // Make sure we know these are legitimate commas and not typos for ';'. 4 namespace Commas { 5 int a, 6 b [[ ]], 7 c alignas(double); 8 } 9 10 struct S {}; 11 enum E { e, }; 12 13 auto f() -> struct S { 14 return S(); 15 } 16 auto g() -> enum E { 17 return E(); 18 } 19 20 class ExtraSemiAfterMemFn { 21 // Due to a peculiarity in the C++11 grammar, a deleted or defaulted function 22 // is permitted to be followed by either one or two semicolons. 23 void f() = delete // expected-error {{expected ';' after delete}} 24 void g() = delete; // ok 25 void h() = delete;; // ok 26 void i() = delete;;; // expected-warning {{extra ';' after member function definition}} 27 }; 28 29 // This is technically okay, but not likely what the user expects, so we will 30 // pedantically warn on it 31 int *const const p = 0; // expected-warning {{duplicate 'const' declaration specifier}} 32 const const int *q = 0; // expected-warning {{duplicate 'const' declaration specifier}} 33 34 static_assert(something, ""); // expected-error {{undeclared identifier}} 35