Clang Project

clang_source_code/test/SemaCXX/extra-semi.cpp
1// RUN: %clang_cc1 -verify -std=c++98 -Wextra-semi %s
2// RUN: %clang_cc1 -verify -std=c++03 -Wextra-semi %s
3// RUN: %clang_cc1 -verify -std=c++11 -Wextra-semi %s
4// RUN: %clang_cc1 -verify -std=c++17 -Wextra-semi %s
5// RUN: %clang_cc1 -verify -std=c++2a -Wextra-semi %s
6// RUN: %clang_cc1 -verify -Weverything -Wno-c++98-compat %s
7// RUN: %clang_cc1 -verify -Weverything -Wno-c++98-compat-pedantic -Wc++98-compat-extra-semi %s
8
9// Last RUN line checks that c++98-compat-extra-semi can still be re-enabled.
10
11void F();
12
13void F(){}
14;
15#if __cplusplus < 201103L
16// expected-warning@-2{{extra ';' outside of a function is a C++11 extension}}
17#else
18// expected-warning@-4{{extra ';' outside of a function is incompatible with C++98}}
19#endif
20
21namespace ns {
22class C {
23  void F() const;
24};
25}
26; // expected-warning {{extra ';' outside of a function is}}
27
28void ns::C::F() const {}
29; // expected-warning {{extra ';' outside of a function is}}
30