| // RUN: %check_clang_tidy %s bugprone-signed-char-misuse %t \ |
| // RUN: -config='{CheckOptions: \ |
| // RUN: [{key: bugprone-signed-char-misuse.CharTypdefsToIgnore, value: "sal_Int8;int8_t"}]}' \ |
| // RUN: -- |
| |
| /////////////////////////////////////////////////////////////////// |
| /// Test cases correctly caught by the check. |
| |
| // Check that a simple test case is still caught. |
| int SimpleAssignment() { |
| signed char CCharacter = -5; |
| int NCharacter; |
| NCharacter = CCharacter; |
| // CHECK-MESSAGES: [[@LINE-1]]:16: warning: 'signed char' to 'int' conversion; consider casting to 'unsigned char' first. [bugprone-signed-char-misuse] |
| |
| return NCharacter; |
| } |
| |
| typedef signed char sal_Char; |
| |
| int TypedefNotInIgnorableList() { |
| sal_Char CCharacter = 'a'; |
| int NCharacter = CCharacter; |
| // CHECK-MESSAGES: [[@LINE-1]]:20: warning: 'signed char' to 'int' conversion; consider casting to 'unsigned char' first. [bugprone-signed-char-misuse] |
| |
| return NCharacter; |
| } |
| |
| /////////////////////////////////////////////////////////////////// |
| /// Test cases correctly ignored by the check. |
| |
| typedef signed char sal_Int8; |
| |
| int OneIgnorableTypedef() { |
| sal_Int8 CCharacter = 'a'; |
| int NCharacter = CCharacter; |
| |
| return NCharacter; |
| } |
| |
| typedef signed char int8_t; |
| |
| int OtherIgnorableTypedef() { |
| int8_t CCharacter = 'a'; |
| int NCharacter = CCharacter; |
| |
| return NCharacter; |
| } |
| |
| /////////////////////////////////////////////////////////////////// |
| /// Test cases which should be caught by the check. |
| |
| namespace boost { |
| |
| template <class T> |
| class optional { |
| T *member; |
| |
| public: |
| optional(T value) { |
| member = new T(value); |
| } |
| |
| T operator*() { return *member; } |
| }; |
| |
| } // namespace boost |
| |
| int DereferenceWithTypdef(boost::optional<sal_Int8> param) { |
| int NCharacter = *param; |
| // CHECK-MESSAGES: [[@LINE-1]]:20: warning: 'signed char' to 'int' conversion; consider casting to 'unsigned char' first. [bugprone-signed-char-misuse] |
| |
| return NCharacter; |
| } |