1// RUN: %clang_cc1 -fsyntax-only -pedantic -verify -DPEDANTIC %s 2// RUN: %clang_cc1 -fsyntax-only -Wextra-semi -verify %s 3// RUN: %clang_cc1 -fsyntax-only -Wextra-semi -verify -std=c++11 %s 4// RUN: cp %s %t 5// RUN: %clang_cc1 -x c++ -Wextra-semi -fixit %t 6// RUN: %clang_cc1 -x c++ -Wextra-semi -Werror %t 7 8class A { 9 void A1(); 10 void A2() { }; 11#ifndef PEDANTIC 12 // This warning is only produced if we specify -Wextra-semi, and not if only 13 // -pedantic is specified, since one semicolon is technically permitted. 14 // expected-warning@-4{{extra ';' after member function definition}} 15#endif 16 void A2b() { };; // expected-warning{{extra ';' after member function definition}} 17 ; // expected-warning{{extra ';' inside a class}} 18 void A2c() { } 19 ; 20#ifndef PEDANTIC 21 // expected-warning@-2{{extra ';' after member function definition}} 22#endif 23 void A3() { }; ;; // expected-warning{{extra ';' after member function definition}} 24 ;;;;;;; // expected-warning{{extra ';' inside a class}} 25 ; // expected-warning{{extra ';' inside a class}} 26 ; ;; ; ;;; // expected-warning{{extra ';' inside a class}} 27 ; ; ; ; ;; // expected-warning{{extra ';' inside a class}} 28 void A4(); 29}; 30 31union B { 32 int a1; 33 int a2;; // expected-warning{{extra ';' inside a union}} 34}; 35 36; 37; ;; 38#if __cplusplus < 201103L 39// expected-warning@-3{{extra ';' outside of a function is a C++11 extension}} 40// expected-warning@-3{{extra ';' outside of a function is a C++11 extension}} 41#endif 42