xref: /llvm-project/clang-tools-extra/test/clang-tidy/checkers/google/namespaces.cpp (revision 89a1d03e2b379e325daa5249411e414bbd995b5e)
1*89a1d03eSRichard // RUN: clang-tidy %s -checks='-*,google-build-namespaces,google-build-using-namespace' -header-filter='.*' -- | FileCheck %s -implicit-check-not="{{warning|error}}:"
2*89a1d03eSRichard #include "Inputs/google-namespaces.h"
3*89a1d03eSRichard // CHECK: warning: do not use unnamed namespaces in header files [google-build-namespaces]
4*89a1d03eSRichard 
5*89a1d03eSRichard using namespace spaaaace;
6*89a1d03eSRichard // CHECK: :[[@LINE-1]]:1: warning: do not use namespace using-directives; use using-declarations instead [google-build-using-namespace]
7*89a1d03eSRichard 
8*89a1d03eSRichard using spaaaace::core; // no-warning
9*89a1d03eSRichard 
10*89a1d03eSRichard namespace std {
11*89a1d03eSRichard inline namespace literals {
12*89a1d03eSRichard inline namespace chrono_literals {
13*89a1d03eSRichard }
14*89a1d03eSRichard inline namespace complex_literals {
15*89a1d03eSRichard }
16*89a1d03eSRichard inline namespace string_literals {
17*89a1d03eSRichard }
18*89a1d03eSRichard }
19*89a1d03eSRichard }
20*89a1d03eSRichard 
21*89a1d03eSRichard using namespace std::chrono_literals;            // no-warning
22*89a1d03eSRichard using namespace std::complex_literals;           // no-warning
23*89a1d03eSRichard using namespace std::literals;                   // no-warning
24*89a1d03eSRichard using namespace std::literals::chrono_literals;  // no-warning
25*89a1d03eSRichard using namespace std::literals::complex_literals; // no-warning
26*89a1d03eSRichard using namespace std::literals::string_literals;  // no-warning
27*89a1d03eSRichard using namespace std::string_literals;            // no-warning
28*89a1d03eSRichard 
29*89a1d03eSRichard namespace literals {}
30*89a1d03eSRichard 
31*89a1d03eSRichard using namespace literals;
32*89a1d03eSRichard // CHECK: :[[@LINE-1]]:1: warning: do not use namespace using-directives; use using-declarations instead [google-build-using-namespace]
33*89a1d03eSRichard 
34*89a1d03eSRichard namespace foo {
35*89a1d03eSRichard inline namespace literals {
36*89a1d03eSRichard inline namespace bar_literals {}
37*89a1d03eSRichard }
38*89a1d03eSRichard }
39*89a1d03eSRichard 
40*89a1d03eSRichard using namespace foo::literals;
41*89a1d03eSRichard // CHECK: :[[@LINE-1]]:1: warning: do not use namespace using-directives; use using-declarations instead [google-build-using-namespace]
42*89a1d03eSRichard 
43*89a1d03eSRichard using namespace foo::bar_literals;
44*89a1d03eSRichard // CHECK: :[[@LINE-1]]:1: warning: do not use namespace using-directives; use using-declarations instead [google-build-using-namespace]
45*89a1d03eSRichard 
46*89a1d03eSRichard using namespace foo::literals::bar_literals;
47*89a1d03eSRichard // CHECK: :[[@LINE-1]]:1: warning: do not use namespace using-directives; use using-declarations instead [google-build-using-namespace]
48*89a1d03eSRichard 
49*89a1d03eSRichard namespace foo_literals {}
50*89a1d03eSRichard 
51*89a1d03eSRichard using namespace foo_literals;
52*89a1d03eSRichard // CHECK: :[[@LINE-1]]:1: warning: do not use namespace using-directives; use using-declarations instead [google-build-using-namespace]
53