blob: 2aa18dfcc0e4e76920fa04a9af7d661645f0eba6 [file] [log] [blame]
Richard Smitheab9d6f2012-07-23 05:45:25 +00001// RUN: %clang_cc1 -fsyntax-only -pedantic -verify -DPEDANTIC %s
Richard Trieu4b0e6f12012-05-16 19:04:59 +00002// RUN: %clang_cc1 -fsyntax-only -Wextra-semi -verify %s
Richard Smitheab9d6f2012-07-23 05:45:25 +00003// RUN: %clang_cc1 -fsyntax-only -Wextra-semi -verify -std=c++11 %s
Richard Trieu4b0e6f12012-05-16 19:04:59 +00004// 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();
Richard Smitheab9d6f2012-07-23 05:45:25 +000010 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 Trieu4b0e6f12012-05-16 19:04:59 +000017 ; // expected-warning{{extra ';' inside a class}}
Richard Smitheab9d6f2012-07-23 05:45:25 +000018 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 Trieu4b0e6f12012-05-16 19:04:59 +000024 ;;;;;;; // 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
Richard Smitheab9d6f2012-07-23 05:45:25 +000036;
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