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 16e3aafe40SCongcong Cai void func_cpp_inc() {} 17c4f83a00SCongcong Cai // CHECK-MESSAGES: :[[@LINE-1]]:6: warning: function 'func_cpp_inc' 18e3aafe40SCongcong Cai // CHECK-FIXES: static void func_cpp_inc() {} 19c4f83a00SCongcong Cai 20e3aafe40SCongcong Cai int* func_cpp_inc_return_ptr() {} 216f21a7bdSCongcong Cai // CHECK-MESSAGES: :[[@LINE-1]]:6: warning: function 'func_cpp_inc_return_ptr' 22e3aafe40SCongcong Cai // CHECK-FIXES: static int* func_cpp_inc_return_ptr() {} 236f21a7bdSCongcong Cai 24e3aafe40SCongcong Cai const int* func_cpp_inc_return_const_ptr() {} 256f21a7bdSCongcong Cai // CHECK-MESSAGES: :[[@LINE-1]]:12: warning: function 'func_cpp_inc_return_const_ptr' 26e3aafe40SCongcong Cai // CHECK-FIXES: static const int* func_cpp_inc_return_const_ptr() {} 276f21a7bdSCongcong Cai 28e3aafe40SCongcong Cai int const* func_cpp_inc_return_ptr_const() {} 296f21a7bdSCongcong Cai // CHECK-MESSAGES: :[[@LINE-1]]:12: warning: function 'func_cpp_inc_return_ptr_const' 30e3aafe40SCongcong Cai // CHECK-FIXES: static int const* func_cpp_inc_return_ptr_const() {} 316f21a7bdSCongcong Cai 32e3aafe40SCongcong Cai int * const func_cpp_inc_return_const() {} 336f21a7bdSCongcong Cai // CHECK-MESSAGES: :[[@LINE-1]]:13: warning: function 'func_cpp_inc_return_const' 34e3aafe40SCongcong Cai // CHECK-FIXES: static int * const func_cpp_inc_return_const() {} 356f21a7bdSCongcong Cai 36e3aafe40SCongcong Cai volatile const int* func_cpp_inc_return_volatile_const_ptr() {} 376f21a7bdSCongcong Cai // CHECK-MESSAGES: :[[@LINE-1]]:21: warning: function 'func_cpp_inc_return_volatile_const_ptr' 38e3aafe40SCongcong Cai // CHECK-FIXES: static volatile const int* func_cpp_inc_return_volatile_const_ptr() {} 396f21a7bdSCongcong Cai 40e3aafe40SCongcong Cai [[nodiscard]] void func_nodiscard() {} 416f21a7bdSCongcong Cai // CHECK-MESSAGES: :[[@LINE-1]]:20: warning: function 'func_nodiscard' 42e3aafe40SCongcong Cai // CHECK-FIXES: {{\[\[nodiscard\]\]}} static void func_nodiscard() {} 436f21a7bdSCongcong Cai 446f21a7bdSCongcong Cai #define NDS [[nodiscard]] 456f21a7bdSCongcong Cai #define NNDS 466f21a7bdSCongcong Cai 47e3aafe40SCongcong Cai NDS void func_nds() {} 486f21a7bdSCongcong Cai // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: function 'func_nds' 49e3aafe40SCongcong Cai // CHECK-FIXES: NDS static void func_nds() {} 506f21a7bdSCongcong Cai 51e3aafe40SCongcong Cai NNDS void func_nnds() {} 526f21a7bdSCongcong Cai // CHECK-MESSAGES: :[[@LINE-1]]:11: warning: function 'func_nnds' 53e3aafe40SCongcong Cai // CHECK-FIXES: NNDS static void func_nnds() {} 546f21a7bdSCongcong Cai 55c4f83a00SCongcong Cai #include "func_cpp.inc" 56c4f83a00SCongcong Cai 57e3aafe40SCongcong Cai void func_h_inc() {} 58c4f83a00SCongcong Cai 59c4f83a00SCongcong Cai struct S { 60c4f83a00SCongcong Cai void method(); 61c4f83a00SCongcong Cai }; 62c4f83a00SCongcong Cai void S::method() {} 63c4f83a00SCongcong Cai 64e3aafe40SCongcong Cai void func_header() {} 65e3aafe40SCongcong Cai extern void func_extern() {} 66e3aafe40SCongcong Cai static void func_static() {} 67c4f83a00SCongcong Cai namespace { 68e3aafe40SCongcong 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() {} 78e3aafe40SCongcong Cai 79e3aafe40SCongcong Cai namespace gh117488 { 80e3aafe40SCongcong Cai void func_with_body(); 81e3aafe40SCongcong Cai // CHECK-MESSAGES: :[[@LINE-1]]:6: warning: function 'func_with_body' 82e3aafe40SCongcong Cai // CHECK-FIXES: static void func_with_body(); 83e3aafe40SCongcong Cai void func_with_body() {} 84e3aafe40SCongcong Cai 85e3aafe40SCongcong Cai void func_without_body(); 86e3aafe40SCongcong Cai void func_without_body(); 87e3aafe40SCongcong Cai } 88*f89fa238SCongcong Cai 89*f89fa238SCongcong Cai // gh117489 start 90*f89fa238SCongcong Cai namespace std { 91*f89fa238SCongcong Cai using size_t = decltype(sizeof(int)); 92*f89fa238SCongcong Cai } 93*f89fa238SCongcong Cai void * operator new(std::size_t) { return nullptr; } 94*f89fa238SCongcong Cai void * operator new[](std::size_t) { return nullptr; } 95*f89fa238SCongcong Cai void operator delete(void*) noexcept {} 96*f89fa238SCongcong Cai void operator delete[](void*) noexcept {} 97*f89fa238SCongcong Cai // gh117489 end 98