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