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