brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.6 KiB · e4c47b0 Raw
46 lines · cpp
1// RUN: %check_clang_tidy -std=c++98 %s readability-implicit-bool-conversion %t2 3// We need NULL macro, but some buildbots don't like including <cstddef> header4// This is a portable way of getting it to work5#undef NULL6#define NULL 0L7 8template<typename T>9void functionTaking(T);10 11struct Struct {12  int member;13};14 15void useOldNullMacroInReplacements() {16  int* pointer = NULL;17  functionTaking<bool>(pointer);18  // CHECK-MESSAGES: :[[@LINE-1]]:24: warning: implicit conversion 'int *' -> 'bool' [readability-implicit-bool-conversion]19  // CHECK-FIXES: functionTaking<bool>(pointer != 0);20 21  int Struct::* memberPointer = NULL;22  functionTaking<bool>(!memberPointer);23  // CHECK-MESSAGES: :[[@LINE-1]]:25: warning: implicit conversion 'int Struct::*' -> 'bool'24  // CHECK-FIXES: functionTaking<bool>(memberPointer == 0);25}26 27void fixFalseLiteralConvertingToNullPointer() {28  functionTaking<int*>(false);29  // CHECK-MESSAGES: :[[@LINE-1]]:24: warning: implicit conversion 'bool' -> 'int *'30  // CHECK-FIXES: functionTaking<int*>(0);31 32  int* pointer = NULL;33  if (pointer == false) {}34  // CHECK-MESSAGES: :[[@LINE-1]]:18: warning: implicit conversion 'bool' -> 'int *'35  // CHECK-FIXES: if (pointer == 0) {}36 37  functionTaking<int Struct::*>(false);38  // CHECK-MESSAGES: :[[@LINE-1]]:33: warning: implicit conversion 'bool' -> 'int Struct::*'39  // CHECK-FIXES: functionTaking<int Struct::*>(0);40 41  int Struct::* memberPointer = NULL;42  if (memberPointer != false) {}43  // CHECK-MESSAGES: :[[@LINE-1]]:24: warning: implicit conversion 'bool' -> 'int Struct::*'44  // CHECK-FIXES: if (memberPointer != 0) {}45}46