xref: /llvm-project/clang-tools-extra/test/clang-tidy/checkers/misc/use-internal-linkage-func.cpp (revision 6f21a7bdeeca84bcc7cf94878e17b5d7ee7b4083)
1c4f83a00SCongcong Cai // RUN: %check_clang_tidy %s misc-use-internal-linkage %t -- -- -I%S/Inputs/use-internal-linkage
2019f5257SCongcong Cai // RUN: %check_clang_tidy %s misc-use-internal-linkage %t -- \
3019f5257SCongcong Cai // RUN:   -config="{CheckOptions: {misc-use-internal-linkage.FixMode: 'UseStatic'}}"  -- -I%S/Inputs/use-internal-linkage
4c4f83a00SCongcong Cai 
5c4f83a00SCongcong Cai #include "func.h"
6c4f83a00SCongcong Cai 
7c4f83a00SCongcong Cai void func() {}
8c4f83a00SCongcong Cai // CHECK-MESSAGES: :[[@LINE-1]]:6: warning: function 'func'
9019f5257SCongcong Cai // CHECK-FIXES: static void func() {}
10c4f83a00SCongcong Cai 
11c4f83a00SCongcong Cai template<class T>
12c4f83a00SCongcong Cai void func_template() {}
13c4f83a00SCongcong Cai // CHECK-MESSAGES: :[[@LINE-1]]:6: warning: function 'func_template'
14019f5257SCongcong Cai // CHECK-FIXES: static void func_template() {}
15c4f83a00SCongcong Cai 
16c4f83a00SCongcong Cai void func_cpp_inc();
17c4f83a00SCongcong Cai // CHECK-MESSAGES: :[[@LINE-1]]:6: warning: function 'func_cpp_inc'
18019f5257SCongcong Cai // CHECK-FIXES: static void func_cpp_inc();
19c4f83a00SCongcong Cai 
20*6f21a7bdSCongcong Cai int* func_cpp_inc_return_ptr();
21*6f21a7bdSCongcong Cai // CHECK-MESSAGES: :[[@LINE-1]]:6: warning: function 'func_cpp_inc_return_ptr'
22*6f21a7bdSCongcong Cai // CHECK-FIXES: static int* func_cpp_inc_return_ptr();
23*6f21a7bdSCongcong Cai 
24*6f21a7bdSCongcong Cai const int* func_cpp_inc_return_const_ptr();
25*6f21a7bdSCongcong Cai // CHECK-MESSAGES: :[[@LINE-1]]:12: warning: function 'func_cpp_inc_return_const_ptr'
26*6f21a7bdSCongcong Cai // CHECK-FIXES: static const int* func_cpp_inc_return_const_ptr();
27*6f21a7bdSCongcong Cai 
28*6f21a7bdSCongcong Cai int const* func_cpp_inc_return_ptr_const();
29*6f21a7bdSCongcong Cai // CHECK-MESSAGES: :[[@LINE-1]]:12: warning: function 'func_cpp_inc_return_ptr_const'
30*6f21a7bdSCongcong Cai // CHECK-FIXES: static int const* func_cpp_inc_return_ptr_const();
31*6f21a7bdSCongcong Cai 
32*6f21a7bdSCongcong Cai int * const func_cpp_inc_return_const();
33*6f21a7bdSCongcong Cai // CHECK-MESSAGES: :[[@LINE-1]]:13: warning: function 'func_cpp_inc_return_const'
34*6f21a7bdSCongcong Cai // CHECK-FIXES: static int * const func_cpp_inc_return_const();
35*6f21a7bdSCongcong Cai 
36*6f21a7bdSCongcong Cai volatile const int* func_cpp_inc_return_volatile_const_ptr();
37*6f21a7bdSCongcong Cai // CHECK-MESSAGES: :[[@LINE-1]]:21: warning: function 'func_cpp_inc_return_volatile_const_ptr'
38*6f21a7bdSCongcong Cai // CHECK-FIXES: static volatile const int* func_cpp_inc_return_volatile_const_ptr();
39*6f21a7bdSCongcong Cai 
40*6f21a7bdSCongcong Cai [[nodiscard]] void func_nodiscard();
41*6f21a7bdSCongcong Cai // CHECK-MESSAGES: :[[@LINE-1]]:20: warning: function 'func_nodiscard'
42*6f21a7bdSCongcong Cai // CHECK-FIXES: {{\[\[nodiscard\]\]}} static void func_nodiscard();
43*6f21a7bdSCongcong Cai 
44*6f21a7bdSCongcong Cai #define NDS [[nodiscard]]
45*6f21a7bdSCongcong Cai #define NNDS
46*6f21a7bdSCongcong Cai 
47*6f21a7bdSCongcong Cai NDS void func_nds();
48*6f21a7bdSCongcong Cai // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: function 'func_nds'
49*6f21a7bdSCongcong Cai // CHECK-FIXES: NDS static void func_nds();
50*6f21a7bdSCongcong Cai 
51*6f21a7bdSCongcong Cai NNDS void func_nnds();
52*6f21a7bdSCongcong Cai // CHECK-MESSAGES: :[[@LINE-1]]:11: warning: function 'func_nnds'
53*6f21a7bdSCongcong Cai // CHECK-FIXES: NNDS static void func_nnds();
54*6f21a7bdSCongcong Cai 
55c4f83a00SCongcong Cai #include "func_cpp.inc"
56c4f83a00SCongcong Cai 
57c4f83a00SCongcong Cai void func_h_inc();
58c4f83a00SCongcong Cai 
59c4f83a00SCongcong Cai struct S {
60c4f83a00SCongcong Cai   void method();
61c4f83a00SCongcong Cai };
62c4f83a00SCongcong Cai void S::method() {}
63c4f83a00SCongcong Cai 
64c4f83a00SCongcong Cai void func_header();
65c4f83a00SCongcong Cai extern void func_extern();
66c4f83a00SCongcong Cai static void func_static();
67c4f83a00SCongcong Cai namespace {
68c4f83a00SCongcong Cai void func_anonymous_ns();
69c4f83a00SCongcong Cai } // namespace
70c4f83a00SCongcong Cai 
71c4f83a00SCongcong Cai int main(int argc, const char*argv[]) {}
72c4f83a00SCongcong Cai 
73c4f83a00SCongcong Cai extern "C" {
74c4f83a00SCongcong Cai void func_extern_c_1() {}
75c4f83a00SCongcong Cai }
76c4f83a00SCongcong Cai 
77c4f83a00SCongcong Cai extern "C" void func_extern_c_2() {}
78