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

source code of clang-tools-extra/test/clang-tidy/checkers/modernize/deprecated-headers-cxx11.cpp