xref: /petsc/src/sys/tests/linter/testStaticFunctionCandidates.cxx (revision 9c5460f9064ca60dd71a234a1f6faf93e7a6b0c9)
1*08bd1863SJacob Faibussowitsch #include "testheader.h"
2*08bd1863SJacob Faibussowitsch 
BareFunctionShouldGetStatic(void)3*08bd1863SJacob Faibussowitsch void BareFunctionShouldGetStatic(void) { }
4*08bd1863SJacob Faibussowitsch 
ExternFunctionShouldNotGetStatic(void)5*08bd1863SJacob Faibussowitsch extern void ExternFunctionShouldNotGetStatic(void) { }
6*08bd1863SJacob Faibussowitsch 
StaticFunctionShouldNotGetStatic(void)7*08bd1863SJacob Faibussowitsch static void StaticFunctionShouldNotGetStatic(void) { }
8*08bd1863SJacob Faibussowitsch 
9*08bd1863SJacob Faibussowitsch // this should not get static
10*08bd1863SJacob Faibussowitsch static void StaticFunctionPreDeclShouldNotGetStatic(void);
11*08bd1863SJacob Faibussowitsch 
12*08bd1863SJacob Faibussowitsch // this should get static!
StaticFunctionPreDeclShouldNotGetStatic(void)13*08bd1863SJacob Faibussowitsch void StaticFunctionPreDeclShouldNotGetStatic(void) { }
14*08bd1863SJacob Faibussowitsch 
15*08bd1863SJacob Faibussowitsch extern void ExternFunctionPreDeclShouldNotGetStatic(void);
16*08bd1863SJacob Faibussowitsch 
ExternFunctionPreDeclShouldNotGetStatic(void)17*08bd1863SJacob Faibussowitsch void ExternFunctionPreDeclShouldNotGetStatic(void) { }
18*08bd1863SJacob Faibussowitsch 
19*08bd1863SJacob Faibussowitsch void BareFunctionPreDeclShouldGetStatic(void);
20*08bd1863SJacob Faibussowitsch 
BareFunctionPreDeclShouldGetStatic(void)21*08bd1863SJacob Faibussowitsch void BareFunctionPreDeclShouldGetStatic(void) { }
22*08bd1863SJacob Faibussowitsch 
23*08bd1863SJacob Faibussowitsch // declaration in testheader has "extern"
ExternHeaderFunctionShouldNotGetStatic(void)24*08bd1863SJacob Faibussowitsch void ExternHeaderFunctionShouldNotGetStatic(void) { }
25*08bd1863SJacob Faibussowitsch 
26*08bd1863SJacob Faibussowitsch class Foo {
27*08bd1863SJacob Faibussowitsch public:
28*08bd1863SJacob Faibussowitsch   friend void swap();
29*08bd1863SJacob Faibussowitsch };
30*08bd1863SJacob Faibussowitsch 
swap()31*08bd1863SJacob Faibussowitsch void swap() { }
32*08bd1863SJacob Faibussowitsch 
33*08bd1863SJacob Faibussowitsch // clang-format off
ExternHeaderBadFormattingShouldNotGetStatic(void)34*08bd1863SJacob Faibussowitsch void                                  ExternHeaderBadFormattingShouldNotGetStatic              ( void)
35*08bd1863SJacob Faibussowitsch {
36*08bd1863SJacob Faibussowitsch 
37*08bd1863SJacob Faibussowitsch }
38*08bd1863SJacob Faibussowitsch // clang-format on
39*08bd1863SJacob Faibussowitsch 
StaticPointerShouldNotGetStatic()40*08bd1863SJacob Faibussowitsch static char *StaticPointerShouldNotGetStatic()
41*08bd1863SJacob Faibussowitsch {
42*08bd1863SJacob Faibussowitsch   return nullptr;
43*08bd1863SJacob Faibussowitsch }
44*08bd1863SJacob Faibussowitsch 
BarePointerShouldGetStatic()45*08bd1863SJacob Faibussowitsch char *BarePointerShouldGetStatic()
46*08bd1863SJacob Faibussowitsch {
47*08bd1863SJacob Faibussowitsch   return nullptr;
48*08bd1863SJacob Faibussowitsch }
49*08bd1863SJacob Faibussowitsch 
ExternPointerShouldGetStatic()50*08bd1863SJacob Faibussowitsch extern char *ExternPointerShouldGetStatic()
51*08bd1863SJacob Faibussowitsch {
52*08bd1863SJacob Faibussowitsch   return nullptr;
53*08bd1863SJacob Faibussowitsch }
54*08bd1863SJacob Faibussowitsch 
PetscExternPointerShouldNotGetStatic()55*08bd1863SJacob Faibussowitsch PETSC_EXTERN char *PetscExternPointerShouldNotGetStatic()
56*08bd1863SJacob Faibussowitsch {
57*08bd1863SJacob Faibussowitsch   return nullptr;
58*08bd1863SJacob Faibussowitsch }
59*08bd1863SJacob Faibussowitsch 
PetscInternPointerShouldNotGetStatic()60*08bd1863SJacob Faibussowitsch PETSC_INTERN char *PetscInternPointerShouldNotGetStatic()
61*08bd1863SJacob Faibussowitsch {
62*08bd1863SJacob Faibussowitsch   return nullptr;
63*08bd1863SJacob Faibussowitsch }
64*08bd1863SJacob Faibussowitsch 
65*08bd1863SJacob Faibussowitsch // clang-format off
PetscExternPointerBadFormattingShouldNotGetStatic()66*08bd1863SJacob Faibussowitsch PETSC_EXTERN char *                   PetscExternPointerBadFormattingShouldNotGetStatic   (   )
67*08bd1863SJacob Faibussowitsch {
68*08bd1863SJacob Faibussowitsch   return nullptr;
69*08bd1863SJacob Faibussowitsch }
70*08bd1863SJacob Faibussowitsch 
PetscInternBadFormattingPointerShouldNotGetStatic()71*08bd1863SJacob Faibussowitsch PETSC_INTERN char *               PetscInternBadFormattingPointerShouldNotGetStatic ()
72*08bd1863SJacob Faibussowitsch {
73*08bd1863SJacob Faibussowitsch   return nullptr;
74*08bd1863SJacob Faibussowitsch }
75*08bd1863SJacob Faibussowitsch // clang-format on
76*08bd1863SJacob Faibussowitsch 
PetscExternHeaderPointerShouldNotGetStatic()77*08bd1863SJacob Faibussowitsch char *PetscExternHeaderPointerShouldNotGetStatic()
78*08bd1863SJacob Faibussowitsch {
79*08bd1863SJacob Faibussowitsch   return nullptr;
80*08bd1863SJacob Faibussowitsch }
81*08bd1863SJacob Faibussowitsch 
PetscInternHeaderPointerShouldNotGetStatic()82*08bd1863SJacob Faibussowitsch char *PetscInternHeaderPointerShouldNotGetStatic()
83*08bd1863SJacob Faibussowitsch {
84*08bd1863SJacob Faibussowitsch   return nullptr;
85*08bd1863SJacob Faibussowitsch }
86*08bd1863SJacob Faibussowitsch 
PetscExternHeaderPointerBadFormattingShouldNotGetStatic()87*08bd1863SJacob Faibussowitsch char *PetscExternHeaderPointerBadFormattingShouldNotGetStatic()
88*08bd1863SJacob Faibussowitsch {
89*08bd1863SJacob Faibussowitsch   return nullptr;
90*08bd1863SJacob Faibussowitsch }
91*08bd1863SJacob Faibussowitsch 
PetscInternHeaderPointerBadFormattingShouldNotGetStatic()92*08bd1863SJacob Faibussowitsch char *PetscInternHeaderPointerBadFormattingShouldNotGetStatic()
93*08bd1863SJacob Faibussowitsch {
94*08bd1863SJacob Faibussowitsch   return nullptr;
95*08bd1863SJacob Faibussowitsch }
96*08bd1863SJacob Faibussowitsch 
97*08bd1863SJacob Faibussowitsch // ironically enough, this will get static
silence_warnings(void)98*08bd1863SJacob Faibussowitsch void silence_warnings(void)
99*08bd1863SJacob Faibussowitsch {
100*08bd1863SJacob Faibussowitsch   (void)StaticFunctionShouldNotGetStatic;
101*08bd1863SJacob Faibussowitsch   (void)StaticFunctionPreDeclShouldNotGetStatic;
102*08bd1863SJacob Faibussowitsch   (void)StaticPointerShouldNotGetStatic;
103*08bd1863SJacob Faibussowitsch }
104