diff options
Diffstat (limited to 'test/Parser/cxx-extra-semi.cpp')
-rw-r--r-- | test/Parser/cxx-extra-semi.cpp | 26 |
1 files changed, 21 insertions, 5 deletions
diff --git a/test/Parser/cxx-extra-semi.cpp b/test/Parser/cxx-extra-semi.cpp index 35c886b63b..2aa18dfcc0 100644 --- a/test/Parser/cxx-extra-semi.cpp +++ b/test/Parser/cxx-extra-semi.cpp @@ -1,13 +1,26 @@ +// 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() { }; // expected-warning{{extra ';' after function definition}} + 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 A3() { }; ;; // expected-warning{{extra ';' after function definition}} + 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}} @@ -20,6 +33,9 @@ union B { int a2;; // expected-warning{{extra ';' inside a union}} }; -; // expected-warning{{extra ';' outside of a function}} -; ;;// expected-warning{{extra ';' outside of a function}} - +; +; ;; +#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}} +#endif |