cxx-extra-semi.cpp 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  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. class A {
  8. void A1();
  9. void A2() { };
  10. #ifndef PEDANTIC
  11. // This warning is only produced if we specify -Wextra-semi, and not if only
  12. // -pedantic is specified, since one semicolon is technically permitted.
  13. // expected-warning@-4{{extra ';' after member function definition}}
  14. #endif
  15. void A2b() { };; // expected-warning{{extra ';' after member function definition}}
  16. ; // expected-warning{{extra ';' inside a class}}
  17. void A2c() { }
  18. ;
  19. #ifndef PEDANTIC
  20. // expected-warning@-2{{extra ';' after member function definition}}
  21. #endif
  22. void A3() { }; ;; // expected-warning{{extra ';' after member function definition}}
  23. ;;;;;;; // expected-warning{{extra ';' inside a class}}
  24. ; // expected-warning{{extra ';' inside a class}}
  25. ; ;; ; ;;; // expected-warning{{extra ';' inside a class}}
  26. ; ; ; ; ;; // expected-warning{{extra ';' inside a class}}
  27. void A4();
  28. };
  29. union B {
  30. int a1;
  31. int a2;; // expected-warning{{extra ';' inside a union}}
  32. };
  33. ;
  34. ; ;;
  35. #if __cplusplus < 201103L
  36. // expected-warning@-3{{extra ';' outside of a function is a C++11 extension}}
  37. // expected-warning@-3{{extra ';' outside of a function is a C++11 extension}}
  38. #endif