1*08bd1863SJacob Faibussowitsch #include "testheader.h" 2*08bd1863SJacob Faibussowitsch BareFunctionShouldGetStatic(void)3*08bd1863SJacob Faibussowitschvoid BareFunctionShouldGetStatic(void) { } 4*08bd1863SJacob Faibussowitsch ExternFunctionShouldNotGetStatic(void)5*08bd1863SJacob Faibussowitschextern void ExternFunctionShouldNotGetStatic(void) { } 6*08bd1863SJacob Faibussowitsch StaticFunctionShouldNotGetStatic(void)7*08bd1863SJacob Faibussowitschstatic 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 Faibussowitschvoid StaticFunctionPreDeclShouldNotGetStatic(void) { } 14*08bd1863SJacob Faibussowitsch 15*08bd1863SJacob Faibussowitsch extern void ExternFunctionPreDeclShouldNotGetStatic(void); 16*08bd1863SJacob Faibussowitsch ExternFunctionPreDeclShouldNotGetStatic(void)17*08bd1863SJacob Faibussowitschvoid ExternFunctionPreDeclShouldNotGetStatic(void) { } 18*08bd1863SJacob Faibussowitsch 19*08bd1863SJacob Faibussowitsch void BareFunctionPreDeclShouldGetStatic(void); 20*08bd1863SJacob Faibussowitsch BareFunctionPreDeclShouldGetStatic(void)21*08bd1863SJacob Faibussowitschvoid BareFunctionPreDeclShouldGetStatic(void) { } 22*08bd1863SJacob Faibussowitsch 23*08bd1863SJacob Faibussowitsch // declaration in testheader has "extern" ExternHeaderFunctionShouldNotGetStatic(void)24*08bd1863SJacob Faibussowitschvoid 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 Faibussowitschvoid swap() { } 32*08bd1863SJacob Faibussowitsch 33*08bd1863SJacob Faibussowitsch // clang-format off ExternHeaderBadFormattingShouldNotGetStatic(void)34*08bd1863SJacob Faibussowitschvoid ExternHeaderBadFormattingShouldNotGetStatic ( void) 35*08bd1863SJacob Faibussowitsch { 36*08bd1863SJacob Faibussowitsch 37*08bd1863SJacob Faibussowitsch } 38*08bd1863SJacob Faibussowitsch // clang-format on 39*08bd1863SJacob Faibussowitsch StaticPointerShouldNotGetStatic()40*08bd1863SJacob Faibussowitschstatic char *StaticPointerShouldNotGetStatic() 41*08bd1863SJacob Faibussowitsch { 42*08bd1863SJacob Faibussowitsch return nullptr; 43*08bd1863SJacob Faibussowitsch } 44*08bd1863SJacob Faibussowitsch BarePointerShouldGetStatic()45*08bd1863SJacob Faibussowitschchar *BarePointerShouldGetStatic() 46*08bd1863SJacob Faibussowitsch { 47*08bd1863SJacob Faibussowitsch return nullptr; 48*08bd1863SJacob Faibussowitsch } 49*08bd1863SJacob Faibussowitsch ExternPointerShouldGetStatic()50*08bd1863SJacob Faibussowitschextern char *ExternPointerShouldGetStatic() 51*08bd1863SJacob Faibussowitsch { 52*08bd1863SJacob Faibussowitsch return nullptr; 53*08bd1863SJacob Faibussowitsch } 54*08bd1863SJacob Faibussowitsch PetscExternPointerShouldNotGetStatic()55*08bd1863SJacob FaibussowitschPETSC_EXTERN char *PetscExternPointerShouldNotGetStatic() 56*08bd1863SJacob Faibussowitsch { 57*08bd1863SJacob Faibussowitsch return nullptr; 58*08bd1863SJacob Faibussowitsch } 59*08bd1863SJacob Faibussowitsch PetscInternPointerShouldNotGetStatic()60*08bd1863SJacob FaibussowitschPETSC_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 FaibussowitschPETSC_EXTERN char * PetscExternPointerBadFormattingShouldNotGetStatic ( ) 67*08bd1863SJacob Faibussowitsch { 68*08bd1863SJacob Faibussowitsch return nullptr; 69*08bd1863SJacob Faibussowitsch } 70*08bd1863SJacob Faibussowitsch PetscInternBadFormattingPointerShouldNotGetStatic()71*08bd1863SJacob FaibussowitschPETSC_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 Faibussowitschchar *PetscExternHeaderPointerShouldNotGetStatic() 78*08bd1863SJacob Faibussowitsch { 79*08bd1863SJacob Faibussowitsch return nullptr; 80*08bd1863SJacob Faibussowitsch } 81*08bd1863SJacob Faibussowitsch PetscInternHeaderPointerShouldNotGetStatic()82*08bd1863SJacob Faibussowitschchar *PetscInternHeaderPointerShouldNotGetStatic() 83*08bd1863SJacob Faibussowitsch { 84*08bd1863SJacob Faibussowitsch return nullptr; 85*08bd1863SJacob Faibussowitsch } 86*08bd1863SJacob Faibussowitsch PetscExternHeaderPointerBadFormattingShouldNotGetStatic()87*08bd1863SJacob Faibussowitschchar *PetscExternHeaderPointerBadFormattingShouldNotGetStatic() 88*08bd1863SJacob Faibussowitsch { 89*08bd1863SJacob Faibussowitsch return nullptr; 90*08bd1863SJacob Faibussowitsch } 91*08bd1863SJacob Faibussowitsch PetscInternHeaderPointerBadFormattingShouldNotGetStatic()92*08bd1863SJacob Faibussowitschchar *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 Faibussowitschvoid 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