brintos

brintos / llvm-project-archived public Read only

0
0
Text · 4.7 KiB · 8dc01d7 Raw
148 lines · cpp
1// RUN: %check_clang_tidy %s modernize-use-bool-literals %t -- \2// RUN:   -config="{CheckOptions: \3// RUN:             {modernize-use-bool-literals.IgnoreMacros: \4// RUN:                true}}"5 6bool IntToTrue = 1;7// CHECK-MESSAGES: :[[@LINE-1]]:18: warning: converting integer literal to bool, use bool literal instead [modernize-use-bool-literals]8// CHECK-FIXES: bool IntToTrue = true;9 10bool IntToFalse(0);11// CHECK-MESSAGES: :[[@LINE-1]]:17: warning: converting integer literal to bool12// CHECK-FIXES: bool IntToFalse(false);13 14bool LongLongToTrue{0x1LL};15// CHECK-MESSAGES: :[[@LINE-1]]:21: warning: converting integer literal to bool16// CHECK-FIXES: bool LongLongToTrue{true};17 18bool ExplicitCStyleIntToFalse = (bool)0;19// CHECK-MESSAGES: :[[@LINE-1]]:33: warning: converting integer literal to bool20// CHECK-FIXES: bool ExplicitCStyleIntToFalse = false;21 22bool ExplicitFunctionalIntToFalse = bool(0);23// CHECK-MESSAGES: :[[@LINE-1]]:37: warning: converting integer literal to bool24// CHECK-FIXES: bool ExplicitFunctionalIntToFalse = false;25 26bool ExplicitStaticIntToFalse = static_cast<bool>(0);27// CHECK-MESSAGES: :[[@LINE-1]]:33: warning: converting integer literal to bool28// CHECK-FIXES: bool ExplicitStaticIntToFalse = false;29 30#define TRUE_MACRO 131// CHECK-FIXES: #define TRUE_MACRO 132 33bool MacroIntToTrue = TRUE_MACRO;34// CHECK-FIXES: bool MacroIntToTrue = TRUE_MACRO;35 36#define FALSE_MACRO bool(0)37// CHECK-FIXES: #define FALSE_MACRO bool(0)38 39bool TrueBool = true; // OK40 41bool FalseBool = bool(FALSE_MACRO);42// CHECK-FIXES: bool FalseBool = bool(FALSE_MACRO);43 44void boolFunction(bool bar) {45 46}47 48char Character = 0; // OK49 50unsigned long long LongInteger = 1; // OK51 52#define MACRO_DEPENDENT_CAST(x) static_cast<bool>(x)53// CHECK-FIXES: #define MACRO_DEPENDENT_CAST(x) static_cast<bool>(x)54 55bool MacroDependentBool = MACRO_DEPENDENT_CAST(0);56// CHECK-FIXES: bool MacroDependentBool = MACRO_DEPENDENT_CAST(0);57 58bool ManyMacrosDependent = MACRO_DEPENDENT_CAST(FALSE_MACRO);59// CHECK-FIXES: bool ManyMacrosDependent = MACRO_DEPENDENT_CAST(FALSE_MACRO);60 61class FooClass {62  public:63  FooClass() : JustBool(0) {}64  // CHECK-MESSAGES: :[[@LINE-1]]:25: warning: converting integer literal to bool65  // CHECK-FIXES: FooClass() : JustBool(false) {}66  FooClass(int) : JustBool{0} {}67  // CHECK-MESSAGES: :[[@LINE-1]]:28: warning: converting integer literal to bool68  // CHECK-FIXES: FooClass(int) : JustBool{false} {}69  private:70  bool JustBool;71  bool BoolWithBraces{0};72  // CHECK-MESSAGES: :[[@LINE-1]]:23: warning: converting integer literal to bool73  // CHECK-FIXES: bool BoolWithBraces{false};74  bool BoolFromInt = 0;75  // CHECK-MESSAGES: :[[@LINE-1]]:22: warning: converting integer literal to bool76  // CHECK-FIXES: bool BoolFromInt = false;77  bool SimpleBool = true; // OK78};79 80template<typename type>81void templateFunction(type) {82  type TemplateType = 0;83  // CHECK-FIXES: type TemplateType = 0;84}85 86template<int c>87void valueDependentTemplateFunction() {88  bool Boolean = c;89  // CHECK-FIXES: bool Boolean = c;90}91 92template<typename type>93void anotherTemplateFunction(type) {94  bool JustBool = 0;95  // CHECK-MESSAGES: :[[@LINE-1]]:19: warning: converting integer literal to bool96  // CHECK-FIXES: bool JustBool = false;97}98 99int main() {100  boolFunction(1);101  // CHECK-MESSAGES: :[[@LINE-1]]:16: warning: converting integer literal to bool102  // CHECK-FIXES: boolFunction(true);103 104  boolFunction(false);105 106  templateFunction(0);107 108  templateFunction(false);109 110  valueDependentTemplateFunction<1>();111 112  anotherTemplateFunction(1);113 114  IntToTrue = 1;115  // CHECK-MESSAGES: :[[@LINE-1]]:15: warning: converting integer literal to bool116  // CHECK-FIXES: IntToTrue = true;117}118 119static int Value = 1;120 121bool Function1() {122  bool Result = Value == 1 ? 1 : 0;123  // CHECK-MESSAGES: :[[@LINE-1]]:30: warning: converting integer literal to bool124  // CHECK-MESSAGES: :[[@LINE-2]]:34: warning: converting integer literal to bool125  // CHECK-FIXES: bool Result = Value == 1 ? true : false;126  return Result;127}128 129bool Function2() {130  return Value == 1 ? 1 : 0;131  // CHECK-MESSAGES: :[[@LINE-1]]:23: warning: converting integer literal to bool132  // CHECK-MESSAGES: :[[@LINE-2]]:27: warning: converting integer literal to bool133  // CHECK-FIXES: return Value == 1 ? true : false;134}135 136void foo() {137  bool Result;138  Result = Value == 1 ? true : 0;139  // CHECK-MESSAGES: :[[@LINE-1]]:32: warning: converting integer literal to bool140  // CHECK-FIXES: Result = Value == 1 ? true : false;141  Result = Value == 1 ? false : bool(0);142  // CHECK-MESSAGES: :[[@LINE-1]]:33: warning: converting integer literal to bool143  // CHECK-FIXES: Result = Value == 1 ? false : false;144  Result = Value == 1 ? (bool)0 : false;145  // CHECK-MESSAGES: :[[@LINE-1]]:25: warning: converting integer literal to bool146  // CHECK-FIXES: Result = Value == 1 ? false : false;147}148