Richard Smith | eab9d6f | 2012-07-23 05:45:25 +0000 | [diff] [blame] | 1 | // RUN: %clang_cc1 -fsyntax-only -pedantic -verify -DPEDANTIC %s |
Richard Trieu | 4b0e6f1 | 2012-05-16 19:04:59 +0000 | [diff] [blame] | 2 | // RUN: %clang_cc1 -fsyntax-only -Wextra-semi -verify %s |
Richard Smith | eab9d6f | 2012-07-23 05:45:25 +0000 | [diff] [blame] | 3 | // RUN: %clang_cc1 -fsyntax-only -Wextra-semi -verify -std=c++11 %s |
Richard Trieu | 4b0e6f1 | 2012-05-16 19:04:59 +0000 | [diff] [blame] | 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 | |
| 8 | class A { |
| 9 | void A1(); |
Richard Smith | eab9d6f | 2012-07-23 05:45:25 +0000 | [diff] [blame] | 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}} |
Richard Trieu | 4b0e6f1 | 2012-05-16 19:04:59 +0000 | [diff] [blame] | 17 | ; // expected-warning{{extra ';' inside a class}} |
Richard Smith | eab9d6f | 2012-07-23 05:45:25 +0000 | [diff] [blame] | 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}} |
Richard Trieu | 4b0e6f1 | 2012-05-16 19:04:59 +0000 | [diff] [blame] | 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 | |
| 31 | union B { |
| 32 | int a1; |
| 33 | int a2;; // expected-warning{{extra ';' inside a union}} |
| 34 | }; |
| 35 | |
Richard Smith | eab9d6f | 2012-07-23 05:45:25 +0000 | [diff] [blame] | 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 |