45 lines
1.6 KiB
C++
45 lines
1.6 KiB
C++
|
// RUN: %clang_cc1 -fsyntax-only -pedantic -verify -DPEDANTIC %s
|
||
|
// RUN: %clang_cc1 -fsyntax-only -Wextra-semi -verify %s
|
||
|
// RUN: %clang_cc1 -fsyntax-only -Wextra-semi -verify -std=c++11 %s
|
||
|
// RUN: cp %s %t
|
||
|
// RUN: %clang_cc1 -x c++ -Wextra-semi -fixit %t
|
||
|
// RUN: %clang_cc1 -x c++ -Wextra-semi -Werror %t
|
||
|
|
||
|
class A {
|
||
|
void A1();
|
||
|
void A2() { };
|
||
|
#ifndef PEDANTIC
|
||
|
// This warning is only produced if we specify -Wextra-semi, and not if only
|
||
|
// -pedantic is specified, since one semicolon is technically permitted.
|
||
|
// expected-warning@-4{{extra ';' after member function definition}}
|
||
|
#endif
|
||
|
void A2b() { };; // expected-warning{{extra ';' after member function definition}}
|
||
|
; // expected-warning{{extra ';' inside a class}}
|
||
|
void A2c() { }
|
||
|
;
|
||
|
#ifndef PEDANTIC
|
||
|
// expected-warning@-2{{extra ';' after member function definition}}
|
||
|
#endif
|
||
|
void A3() { }; ;; // expected-warning{{extra ';' after member function definition}}
|
||
|
;;;;;;; // expected-warning{{extra ';' inside a class}}
|
||
|
; // expected-warning{{extra ';' inside a class}}
|
||
|
; ;; ; ;;; // expected-warning{{extra ';' inside a class}}
|
||
|
; ; ; ; ;; // expected-warning{{extra ';' inside a class}}
|
||
|
void A4();
|
||
|
};
|
||
|
|
||
|
union B {
|
||
|
int a1;
|
||
|
int a2;; // expected-warning{{extra ';' inside a union}}
|
||
|
};
|
||
|
|
||
|
;
|
||
|
; ;;
|
||
|
#if __cplusplus < 201103L
|
||
|
// expected-warning@-3{{extra ';' outside of a function is a C++11 extension}}
|
||
|
// expected-warning@-3{{extra ';' outside of a function is a C++11 extension}}
|
||
|
#elif !defined(PEDANTIC)
|
||
|
// expected-warning@-6{{extra ';' outside of a function is incompatible with C++98}}
|
||
|
// expected-warning@-6{{extra ';' outside of a function is incompatible with C++98}}
|
||
|
#endif
|