1#pragma clang system_header
2
3// Implement standard types that are known to be defined as unsigned in some
4// implementations like MSVC.
5namespace std {
6namespace locale {
7enum category : int {
8 none = 0u,
9 collate = 1u << 1u,
10 ctype = 1u << 2u,
11 monetary = 1u << 3u,
12 numeric = 1u << 4u,
13 time = 1u << 5u,
14 messages = 1u << 6u,
15 all = none | collate | ctype | monetary | numeric | time | messages
16 // CHECK MESSAGES: [[@LINE-1]]:9: warning: use of a signed integer operand with a binary bitwise operator
17};
18} // namespace locale
19
20namespace ctype_base {
21enum mask : int {
22 space,
23 print,
24 cntrl,
25 upper,
26 lower,
27 alpha,
28 digit,
29 punct,
30 xdigit,
31 /* blank, // C++11 */
32 alnum = alpha | digit,
33 // CHECK MESSAGES: [[@LINE-1]]:11: warning: use of a signed integer operand with a binary bitwise operator
34 graph = alnum | punct
35 // CHECK MESSAGES: [[@LINE-1]]:11: warning: use of a signed integer operand with a binary bitwise operator
36};
37} // namespace ctype_base
38
39namespace ios_base {
40enum fmtflags : int {
41 dec = 0u,
42 oct = 1u << 2u,
43 hex = 1u << 3u,
44 basefield = dec | oct | hex | 0u,
45 // CHECK MESSAGES: [[@LINE-1]]:15: warning: use of a signed integer operand with a binary bitwise operator
46 left = 1u << 4u,
47 right = 1u << 5u,
48 internal = 1u << 6u,
49 adjustfield = left | right | internal,
50 // CHECK MESSAGES: [[@LINE-1]]:17: warning: use of a signed integer operand with a binary bitwise operator
51 scientific = 1u << 7u,
52 fixed = 1u << 8u,
53 floatfield = scientific | fixed | (scientific | fixed) | 0u,
54 // CHECK MESSAGES: [[@LINE-1]]:16: warning: use of a signed integer operand with a binary bitwise operator
55 // CHECK MESSAGES: [[@LINE-2]]:38: warning: use of a signed integer operand with a binary bitwise operator
56 boolalpha = 1u << 9u,
57 showbase = 1u << 10u,
58 showpoint = 1u << 11u,
59 showpos = 1u << 12u,
60 skipws = 1u << 13u,
61 unitbuf = 1u << 14u,
62 uppercase = 1u << 15u
63};
64
65enum iostate : int {
66 goodbit = 0u,
67 badbit = 1u << 1u,
68 failbit = 1u << 2u,
69 eofbit = 1u << 3u
70};
71
72enum openmode : int {
73 app = 0u,
74 binary = 0u << 1u,
75 in = 0u << 2u,
76 out = 0u << 3u,
77 trunc = 0u << 4u,
78 ate = 0u << 5u
79};
80} // namespace ios_base
81} // namespace std
82

source code of clang-tools-extra/test/clang-tidy/checkers/hicpp/signed-bitwise-standard-types.h