| 1 | #pragma clang system_header |
| 2 | |
| 3 | // Implement standard types that are known to be defined as unsigned in some |
| 4 | // implementations like MSVC. |
| 5 | namespace std { |
| 6 | namespace locale { |
| 7 | enum 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 | |
| 20 | namespace ctype_base { |
| 21 | enum 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 | |
| 39 | namespace ios_base { |
| 40 | enum 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 | |
| 65 | enum iostate : int { |
| 66 | goodbit = 0u, |
| 67 | badbit = 1u << 1u, |
| 68 | failbit = 1u << 2u, |
| 69 | eofbit = 1u << 3u |
| 70 | }; |
| 71 | |
| 72 | enum 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 | |