brintos

brintos / llvm-project-archived public Read only

0
0
Text · 5.0 KiB · 1acb3c3 Raw
152 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:                false}}"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-MESSAGES: :[[@LINE-1]]:23: warning: converting integer literal to bool35// CHECK-FIXES: bool MacroIntToTrue = TRUE_MACRO;36 37#define FALSE_MACRO bool(0)38// CHECK-FIXES: #define FALSE_MACRO bool(0)39 40bool TrueBool = true; // OK41 42bool FalseBool = bool(FALSE_MACRO);43// CHECK-MESSAGES: :[[@LINE-1]]:23: warning: converting integer literal to bool44// CHECK-FIXES: bool FalseBool = bool(FALSE_MACRO);45 46void boolFunction(bool bar) {47 48}49 50char Character = 0; // OK51 52unsigned long long LongInteger = 1; // OK53 54#define MACRO_DEPENDENT_CAST(x) static_cast<bool>(x)55// CHECK-FIXES: #define MACRO_DEPENDENT_CAST(x) static_cast<bool>(x)56 57bool MacroDependentBool = MACRO_DEPENDENT_CAST(0);58// CHECK-MESSAGES: :[[@LINE-1]]:27: warning: converting integer literal to bool59// CHECK-FIXES: bool MacroDependentBool = MACRO_DEPENDENT_CAST(0);60 61bool ManyMacrosDependent = MACRO_DEPENDENT_CAST(FALSE_MACRO);62// CHECK-MESSAGES: :[[@LINE-1]]:49: warning: converting integer literal to bool63// CHECK-FIXES: bool ManyMacrosDependent = MACRO_DEPENDENT_CAST(FALSE_MACRO);64 65class FooClass {66  public:67  FooClass() : JustBool(0) {}68  // CHECK-MESSAGES: :[[@LINE-1]]:25: warning: converting integer literal to bool69  // CHECK-FIXES: FooClass() : JustBool(false) {}70  FooClass(int) : JustBool{0} {}71  // CHECK-MESSAGES: :[[@LINE-1]]:28: warning: converting integer literal to bool72  // CHECK-FIXES: FooClass(int) : JustBool{false} {}73  private:74  bool JustBool;75  bool BoolWithBraces{0};76  // CHECK-MESSAGES: :[[@LINE-1]]:23: warning: converting integer literal to bool77  // CHECK-FIXES: bool BoolWithBraces{false};78  bool BoolFromInt = 0;79  // CHECK-MESSAGES: :[[@LINE-1]]:22: warning: converting integer literal to bool80  // CHECK-FIXES: bool BoolFromInt = false;81  bool SimpleBool = true; // OK82};83 84template<typename type>85void templateFunction(type) {86  type TemplateType = 0;87  // CHECK-FIXES: type TemplateType = 0;88}89 90template<int c>91void valueDependentTemplateFunction() {92  bool Boolean = c;93  // CHECK-FIXES: bool Boolean = c;94}95 96template<typename type>97void anotherTemplateFunction(type) {98  bool JustBool = 0;99  // CHECK-MESSAGES: :[[@LINE-1]]:19: warning: converting integer literal to bool100  // CHECK-FIXES: bool JustBool = false;101}102 103int main() {104  boolFunction(1);105  // CHECK-MESSAGES: :[[@LINE-1]]:16: warning: converting integer literal to bool106  // CHECK-FIXES: boolFunction(true);107 108  boolFunction(false);109 110  templateFunction(0);111 112  templateFunction(false);113 114  valueDependentTemplateFunction<1>();115 116  anotherTemplateFunction(1);117 118  IntToTrue = 1;119  // CHECK-MESSAGES: :[[@LINE-1]]:15: warning: converting integer literal to bool120  // CHECK-FIXES: IntToTrue = true;121}122 123static int Value = 1;124 125bool Function1() {126  bool Result = Value == 1 ? 1 : 0;127  // CHECK-MESSAGES: :[[@LINE-1]]:30: warning: converting integer literal to bool128  // CHECK-MESSAGES: :[[@LINE-2]]:34: warning: converting integer literal to bool129  // CHECK-FIXES: bool Result = Value == 1 ? true : false;130  return Result;131}132 133bool Function2() {134  return Value == 1 ? 1 : 0;135  // CHECK-MESSAGES: :[[@LINE-1]]:23: warning: converting integer literal to bool136  // CHECK-MESSAGES: :[[@LINE-2]]:27: warning: converting integer literal to bool137  // CHECK-FIXES: return Value == 1 ? true : false;138}139 140void foo() {141  bool Result;142  Result = Value == 1 ? true : 0;143  // CHECK-MESSAGES: :[[@LINE-1]]:32: warning: converting integer literal to bool144  // CHECK-FIXES: Result = Value == 1 ? true : false;145  Result = Value == 1 ? false : bool(0);146  // CHECK-MESSAGES: :[[@LINE-1]]:33: warning: converting integer literal to bool147  // CHECK-FIXES: Result = Value == 1 ? false : false;148  Result = Value == 1 ? (bool)0 : false;149  // CHECK-MESSAGES: :[[@LINE-1]]:25: warning: converting integer literal to bool150  // CHECK-FIXES: Result = Value == 1 ? false : false;151}152