1 // RUN: %check_clang_tidy -std=c++98 %s modernize-deprecated-headers %t -- -extra-arg-before=-isystem%S/Inputs/modernize-deprecated-headers 2 3 #include <assert.h> 4 // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: inclusion of deprecated C++ header 'assert.h'; consider using 'cassert' instead [modernize-deprecated-headers] 5 // CHECK-FIXES: {{^}}#include <cassert>{{$}} 6 #include <complex.h> 7 // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: inclusion of deprecated C++ header 'complex.h'; consider using 'complex' instead 8 // CHECK-FIXES: {{^}}#include <complex>{{$}} 9 #include <ctype.h> 10 // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: inclusion of deprecated C++ header 'ctype.h'; consider using 'cctype' instead 11 // CHECK-FIXES: {{^}}#include <cctype>{{$}} 12 #include <errno.h> 13 // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: inclusion of deprecated C++ header 'errno.h'; consider using 'cerrno' instead 14 // CHECK-FIXES: {{^}}#include <cerrno>{{$}} 15 #include <float.h> 16 // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: inclusion of deprecated C++ header 'float.h'; consider using 'cfloat' instead 17 // CHECK-FIXES: {{^}}#include <cfloat>{{$}} 18 #include <limits.h> 19 // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: inclusion of deprecated C++ header 'limits.h'; consider using 'climits' instead 20 // CHECK-FIXES: {{^}}#include <climits>{{$}} 21 #include <locale.h> 22 // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: inclusion of deprecated C++ header 'locale.h'; consider using 'clocale' instead 23 // CHECK-FIXES: {{^}}#include <clocale>{{$}} 24 #include <math.h> 25 // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: inclusion of deprecated C++ header 'math.h'; consider using 'cmath' instead 26 // CHECK-FIXES: {{^}}#include <cmath>{{$}} 27 #include <setjmp.h> 28 // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: inclusion of deprecated C++ header 'setjmp.h'; consider using 'csetjmp' instead 29 // CHECK-FIXES: {{^}}#include <csetjmp>{{$}} 30 #include <signal.h> 31 // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: inclusion of deprecated C++ header 'signal.h'; consider using 'csignal' instead 32 // CHECK-FIXES: {{^}}#include <csignal>{{$}} 33 #include <stdarg.h> 34 // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: inclusion of deprecated C++ header 'stdarg.h'; consider using 'cstdarg' instead 35 // CHECK-FIXES: {{^}}#include <cstdarg>{{$}} 36 #include <stddef.h> 37 // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: inclusion of deprecated C++ header 'stddef.h'; consider using 'cstddef' instead 38 // CHECK-FIXES: {{^}}#include <cstddef>{{$}} 39 #include <stdio.h> 40 // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: inclusion of deprecated C++ header 'stdio.h'; consider using 'cstdio' instead 41 // CHECK-FIXES: {{^}}#include <cstdio>{{$}} 42 #include <stdlib.h> 43 // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: inclusion of deprecated C++ header 'stdlib.h'; consider using 'cstdlib' instead 44 // CHECK-FIXES: {{^}}#include <cstdlib>{{$}} 45 #include <string.h> 46 // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: inclusion of deprecated C++ header 'string.h'; consider using 'cstring' instead 47 // CHECK-FIXES: {{^}}#include <cstring>{{$}} 48 #include <time.h> 49 // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: inclusion of deprecated C++ header 'time.h'; consider using 'ctime' instead 50 // CHECK-FIXES: {{^}}#include <ctime>{{$}} 51 #include <wchar.h> 52 // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: inclusion of deprecated C++ header 'wchar.h'; consider using 'cwchar' instead 53 // CHECK-FIXES: {{^}}#include <cwchar>{{$}} 54 #include <wctype.h> 55 // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: inclusion of deprecated C++ header 'wctype.h'; consider using 'cwctype' instead 56 // CHECK-FIXES: {{^}}#include <cwctype>{{$}} 57 58 // Headers that have no effect in C++; remove them 59 #include <stdalign.h> // <stdalign.h> 60 // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: including 'stdalign.h' has no effect in C++; consider removing it 61 // CHECK-FIXES: {{^}}// <stdalign.h>{{$}} 62 #include <stdbool.h> // <stdbool.h> 63 // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: including 'stdbool.h' has no effect in C++; consider removing it 64 // CHECK-FIXES: {{^}}// <stdbool.h>{{$}} 65 #include <iso646.h> // <iso646.h> 66 // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: including 'iso646.h' has no effect in C++; consider removing it 67 // CHECK-FIXES: {{^}}// <iso646.h>{{$}} 68 69 // Headers deprecated since C++11: expect no diagnostics. 70 #include <fenv.h> 71 #include <inttypes.h> 72 #include <stdint.h> 73 #include <tgmath.h> 74 #include <uchar.h> 75 76 77 #include "assert.h" 78 // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: inclusion of deprecated C++ header 'assert.h'; consider using 'cassert' instead 79 // CHECK-FIXES: {{^}}#include <cassert>{{$}} 80 #include "complex.h" 81 // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: inclusion of deprecated C++ header 'complex.h'; consider using 'complex' instead 82 // CHECK-FIXES: {{^}}#include <complex>{{$}} 83 #include "ctype.h" 84 // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: inclusion of deprecated C++ header 'ctype.h'; consider using 'cctype' instead 85 // CHECK-FIXES: {{^}}#include <cctype>{{$}} 86 #include "errno.h" 87 // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: inclusion of deprecated C++ header 'errno.h'; consider using 'cerrno' instead 88 // CHECK-FIXES: {{^}}#include <cerrno>{{$}} 89 #include "float.h" 90 // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: inclusion of deprecated C++ header 'float.h'; consider using 'cfloat' instead 91 // CHECK-FIXES: {{^}}#include <cfloat>{{$}} 92 #include "limits.h" 93 // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: inclusion of deprecated C++ header 'limits.h'; consider using 'climits' instead 94 // CHECK-FIXES: {{^}}#include <climits>{{$}} 95 #include "locale.h" 96 // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: inclusion of deprecated C++ header 'locale.h'; consider using 'clocale' instead 97 // CHECK-FIXES: {{^}}#include <clocale>{{$}} 98 #include "math.h" 99 // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: inclusion of deprecated C++ header 'math.h'; consider using 'cmath' instead 100 // CHECK-FIXES: {{^}}#include <cmath>{{$}} 101 #include "setjmp.h" 102 // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: inclusion of deprecated C++ header 'setjmp.h'; consider using 'csetjmp' instead 103 // CHECK-FIXES: {{^}}#include <csetjmp>{{$}} 104 #include "signal.h" 105 // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: inclusion of deprecated C++ header 'signal.h'; consider using 'csignal' instead 106 // CHECK-FIXES: {{^}}#include <csignal>{{$}} 107 #include "stdarg.h" 108 // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: inclusion of deprecated C++ header 'stdarg.h'; consider using 'cstdarg' instead 109 // CHECK-FIXES: {{^}}#include <cstdarg>{{$}} 110 #include "stddef.h" 111 // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: inclusion of deprecated C++ header 'stddef.h'; consider using 'cstddef' instead 112 // CHECK-FIXES: {{^}}#include <cstddef>{{$}} 113 #include "stdio.h" 114 // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: inclusion of deprecated C++ header 'stdio.h'; consider using 'cstdio' instead 115 // CHECK-FIXES: {{^}}#include <cstdio>{{$}} 116 #include "stdlib.h" 117 // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: inclusion of deprecated C++ header 'stdlib.h'; consider using 'cstdlib' instead 118 // CHECK-FIXES: {{^}}#include <cstdlib>{{$}} 119 #include "string.h" 120 // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: inclusion of deprecated C++ header 'string.h'; consider using 'cstring' instead 121 // CHECK-FIXES: {{^}}#include <cstring>{{$}} 122 #include "time.h" 123 // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: inclusion of deprecated C++ header 'time.h'; consider using 'ctime' instead 124 // CHECK-FIXES: {{^}}#include <ctime>{{$}} 125 #include "wchar.h" 126 // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: inclusion of deprecated C++ header 'wchar.h'; consider using 'cwchar' instead 127 // CHECK-FIXES: {{^}}#include <cwchar>{{$}} 128 #include "wctype.h" 129 // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: inclusion of deprecated C++ header 'wctype.h'; consider using 'cwctype' instead 130 // CHECK-FIXES: {{^}}#include <cwctype> 131 132 // Headers that have no effect in C++; remove them 133 #include "stdalign.h" // "stdalign.h" 134 // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: including 'stdalign.h' has no effect in C++; consider removing it 135 // CHECK-FIXES: {{^}}// "stdalign.h"{{$}} 136 #include "stdbool.h" // "stdbool.h" 137 // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: including 'stdbool.h' has no effect in C++; consider removing it 138 // CHECK-FIXES: {{^}}// "stdbool.h"{{$}} 139 #include "iso646.h" // "iso646.h" 140 // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: including 'iso646.h' has no effect in C++; consider removing it 141 // CHECK-FIXES: {{^}}// "iso646.h"{{$}} 142 143 // Headers deprecated since C++11; expect no diagnostics 144 #include "fenv.h" 145 #include "inttypes.h" 146 #include "stdint.h" 147 #include "tgmath.h" 148 #include "uchar.h" 149