| // RUN: %check_clang_tidy %s readability-simplify-boolean-expr %t |
| |
| bool switch_stmt(int i, int j, bool b) { |
| switch (i) { |
| case 0: |
| if (b == true) |
| j = 10; |
| break; |
| // CHECK-MESSAGES: :[[@LINE-3]]:14: warning: {{.*}} to boolean operator |
| // CHECK-FIXES: {{if \(b\)}} |
| // CHECK-FIXES-NEXT: {{j = 10;}} |
| |
| case 1: |
| if (b == false) |
| j = -20; |
| break; |
| // CHECK-MESSAGES: :[[@LINE-3]]:14: warning: {{.*}} to boolean operator |
| // CHECK-FIXES: {{if \(!b\)}} |
| // CHECK-FIXES-NEXT: {{j = -20;}} |
| |
| case 2: |
| if (b && true) |
| j = 10; |
| break; |
| // CHECK-MESSAGES: :[[@LINE-3]]:14: warning: {{.*}} to boolean operator |
| // CHECK-FIXES: {{if \(b\)}} |
| // CHECK-FIXES-NEXT: {{j = 10;}} |
| |
| case 3: |
| if (b && false) |
| j = -20; |
| break; |
| // CHECK-MESSAGES: :[[@LINE-3]]:14: warning: {{.*}} to boolean operator |
| // CHECK-FIXES: {{if \(false\)}} |
| // CHECK-FIXES-NEXT: {{j = -20;}} |
| |
| case 4: |
| if (b || true) |
| j = 10; |
| break; |
| // CHECK-MESSAGES: :[[@LINE-3]]:14: warning: {{.*}} to boolean operator |
| // CHECK-FIXES: {{if \(true\)}} |
| // CHECK-FIXES-NEXT: {{j = 10;}} |
| // CHECK-FIXES-NEXT: {{break;}} |
| |
| case 5: |
| if (b || false) |
| j = -20; |
| break; |
| // CHECK-MESSAGES: :[[@LINE-3]]:14: warning: {{.*}} to boolean operator |
| // CHECK-FIXES: {{if \(b\)}} |
| // CHECK-FIXES-NEXT: {{j = -20;}} |
| |
| case 6: |
| return i > 0 ? true : false; |
| // CHECK-MESSAGES: :[[@LINE-1]]:20: warning: {{.*}} in ternary expression result |
| // CHECK-FIXES: {{return i > 0;}} |
| |
| case 7: |
| return i > 0 ? false : true; |
| // CHECK-MESSAGES: :[[@LINE-1]]:20: warning: {{.*}} in ternary expression result |
| // CHECK-FIXES: {{return i <= 0;}} |
| |
| case 8: |
| if (true) |
| j = 10; |
| else |
| j = -20; |
| break; |
| // CHECK-MESSAGES: :[[@LINE-5]]:9: warning: {{.*}} in if statement condition |
| // CHECK-FIXES: {{j = 10;$}} |
| // CHECK-FIXES-NEXT: {{break;$}} |
| |
| case 9: |
| if (false) |
| j = -20; |
| else |
| j = 10; |
| break; |
| // CHECK-MESSAGES: :[[@LINE-5]]:9: warning: {{.*}} in if statement condition |
| // CHECK-FIXES: {{j = 10;}} |
| // CHECK-FIXES-NEXT: {{break;}} |
| |
| case 10: |
| if (j > 10) |
| return true; |
| else |
| return false; |
| // CHECK-MESSAGES: :[[@LINE-3]]:14: warning: {{.*}} in conditional return statement |
| // CHECK-FIXES: {{return j > 10;}} |
| |
| case 11: |
| if (j > 10) |
| return false; |
| else |
| return true; |
| // CHECK-MESSAGES: :[[@LINE-3]]:14: warning: {{.*}} in conditional return statement |
| // CHECK-FIXES: {{return j <= 10;}} |
| |
| case 12: |
| if (j > 10) |
| b = true; |
| else |
| b = false; |
| return b; |
| // CHECK-MESSAGES: :[[@LINE-4]]:11: warning: {{.*}} in conditional assignment |
| // CHECK-FIXES: {{b = j > 10;}} |
| // CHECK-FIXES-NEXT: {{return b;}} |
| |
| case 13: |
| if (j > 10) |
| b = false; |
| else |
| b = true; |
| return b; |
| // CHECK-MESSAGES: :[[@LINE-4]]:11: warning: {{.*}} in conditional assignment |
| // CHECK-FIXES: {{b = j <= 10;}} |
| // CHECK-FIXES-NEXT: {{return b;}} |
| |
| case 14: |
| if (j > 10) |
| return true; |
| return false; |
| // CHECK-MESSAGES: :[[@LINE-2]]:14: warning: {{.*}} in conditional return |
| // FIXES: {{return j > 10;}} |
| |
| case 15: |
| if (j > 10) |
| return false; |
| return true; |
| // CHECK-MESSAGES: :[[@LINE-2]]:14: warning: {{.*}} in conditional return |
| // FIXES: {{return j <= 10;}} |
| |
| case 16: |
| if (j > 10) |
| return true; |
| return true; |
| return false; |
| |
| case 17: |
| if (j > 10) |
| return false; |
| return false; |
| return true; |
| |
| case 100: { |
| if (b == true) |
| j = 10; |
| break; |
| // CHECK-MESSAGES: :[[@LINE-3]]:14: warning: {{.*}} to boolean operator |
| // CHECK-FIXES: {{if \(b\)}} |
| // CHECK-FIXES-NEXT: {{j = 10;}} |
| } |
| |
| case 101: { |
| if (b == false) |
| j = -20; |
| break; |
| // CHECK-MESSAGES: :[[@LINE-3]]:14: warning: {{.*}} to boolean operator |
| // CHECK-FIXES: {{if \(!b\)}} |
| // CHECK-FIXES-NEXT: {{j = -20;}} |
| } |
| |
| case 102: { |
| if (b && true) |
| j = 10; |
| break; |
| // CHECK-MESSAGES: :[[@LINE-3]]:14: warning: {{.*}} to boolean operator |
| // CHECK-FIXES: {{if \(b\)}} |
| // CHECK-FIXES-NEXT: {{j = 10;}} |
| } |
| |
| case 103: { |
| if (b && false) |
| j = -20; |
| break; |
| // CHECK-MESSAGES: :[[@LINE-3]]:14: warning: {{.*}} to boolean operator |
| // CHECK-FIXES: {{if \(false\)}} |
| // CHECK-FIXES-NEXT: {{j = -20;}} |
| } |
| |
| case 104: { |
| if (b || true) |
| j = 10; |
| break; |
| // CHECK-MESSAGES: :[[@LINE-3]]:14: warning: {{.*}} to boolean operator |
| // CHECK-FIXES: {{if \(true\)}} |
| // CHECK-FIXES-NEXT: {{j = 10;}} |
| // CHECK-FIXES-NEXT: {{break;}} |
| } |
| |
| case 105: { |
| if (b || false) |
| j = -20; |
| break; |
| // CHECK-MESSAGES: :[[@LINE-3]]:14: warning: {{.*}} to boolean operator |
| // CHECK-FIXES: {{if \(b\)}} |
| // CHECK-FIXES-NEXT: {{j = -20;}} |
| } |
| |
| case 106: { |
| return i > 0 ? true : false; |
| // CHECK-MESSAGES: :[[@LINE-1]]:20: warning: {{.*}} in ternary expression result |
| // CHECK-FIXES: {{return i > 0;}} |
| } |
| |
| case 107: { |
| return i > 0 ? false : true; |
| // CHECK-MESSAGES: :[[@LINE-1]]:20: warning: {{.*}} in ternary expression result |
| // CHECK-FIXES: {{return i <= 0;}} |
| } |
| |
| case 108: { |
| if (true) |
| j = 10; |
| else |
| j = -20; |
| break; |
| // CHECK-MESSAGES: :[[@LINE-5]]:9: warning: {{.*}} in if statement condition |
| // CHECK-FIXES: {{j = 10;$}} |
| // CHECK-FIXES-NEXT: {{break;$}} |
| } |
| |
| case 109: { |
| if (false) |
| j = -20; |
| else |
| j = 10; |
| break; |
| // CHECK-MESSAGES: :[[@LINE-5]]:9: warning: {{.*}} in if statement condition |
| // CHECK-FIXES: {{j = 10;}} |
| // CHECK-FIXES-NEXT: {{break;}} |
| } |
| |
| case 110: { |
| if (j > 10) |
| return true; |
| else |
| return false; |
| // CHECK-MESSAGES: :[[@LINE-3]]:14: warning: {{.*}} in conditional return statement |
| // CHECK-FIXES: {{return j > 10;}} |
| } |
| |
| case 111: { |
| if (j > 10) |
| return false; |
| else |
| return true; |
| // CHECK-MESSAGES: :[[@LINE-3]]:14: warning: {{.*}} in conditional return statement |
| // CHECK-FIXES: {{return j <= 10;}} |
| } |
| |
| case 112: { |
| if (j > 10) |
| b = true; |
| else |
| b = false; |
| return b; |
| // CHECK-MESSAGES: :[[@LINE-4]]:11: warning: {{.*}} in conditional assignment |
| // CHECK-FIXES: {{b = j > 10;}} |
| // CHECK-FIXES-NEXT: {{return b;}} |
| } |
| |
| case 113: { |
| if (j > 10) |
| b = false; |
| else |
| b = true; |
| return b; |
| // CHECK-MESSAGES: :[[@LINE-4]]:11: warning: {{.*}} in conditional assignment |
| // CHECK-FIXES: {{b = j <= 10;}} |
| // CHECK-FIXES-NEXT: {{return b;}} |
| } |
| |
| case 114: { |
| if (j > 10) |
| return true; |
| return false; |
| // CHECK-MESSAGES: :[[@LINE-2]]:14: warning: {{.*}} in conditional return |
| // CHECK-FIXES: {{return j > 10;}} |
| } |
| |
| case 115: { |
| if (j > 10) |
| return false; |
| return true; |
| // CHECK-MESSAGES: :[[@LINE-2]]:14: warning: {{.*}} in conditional return |
| // CHECK-FIXES: {{return j <= 10;}} |
| } |
| |
| case 116: { |
| return false; |
| if (j > 10) |
| return true; |
| } |
| |
| case 117: { |
| return true; |
| if (j > 10) |
| return false; |
| } |
| } |
| |
| return j > 0; |
| } |
| |
| bool default_stmt0(int i, int j, bool b) { |
| switch (i) { |
| case 0: |
| return true; |
| |
| default: |
| if (b == true) |
| j = 10; |
| break; |
| // CHECK-MESSAGES: :[[@LINE-3]]:14: warning: {{.*}} to boolean operator |
| // CHECK-FIXES: {{if \(b\)}} |
| // CHECK-FIXES-NEXT: {{j = 10;}} |
| } |
| return false; |
| } |
| |
| bool default_stmt1(int i, int j, bool b) { |
| switch (i) { |
| case 0: |
| return true; |
| |
| default: |
| if (b == false) |
| j = -20; |
| break; |
| // CHECK-MESSAGES: :[[@LINE-3]]:14: warning: {{.*}} to boolean operator |
| // CHECK-FIXES: {{if \(!b\)}} |
| // CHECK-FIXES-NEXT: {{j = -20;}} |
| } |
| return false; |
| } |
| |
| bool default_stmt2(int i, int j, bool b) { |
| switch (i) { |
| case 0: |
| return true; |
| |
| default: |
| if (b && true) |
| j = 10; |
| break; |
| // CHECK-MESSAGES: :[[@LINE-3]]:14: warning: {{.*}} to boolean operator |
| // CHECK-FIXES: {{if \(b\)}} |
| // CHECK-FIXES-NEXT: {{j = 10;}} |
| } |
| return false; |
| } |
| |
| bool default_stmt3(int i, int j, bool b) { |
| switch (i) { |
| case 0: |
| return true; |
| |
| default: |
| if (b && false) |
| j = -20; |
| break; |
| // CHECK-MESSAGES: :[[@LINE-3]]:14: warning: {{.*}} to boolean operator |
| // CHECK-FIXES: {{if \(false\)}} |
| // CHECK-FIXES-NEXT: {{j = -20;}} |
| } |
| return false; |
| } |
| |
| bool default_stmt4(int i, int j, bool b) { |
| switch (i) { |
| case 0: |
| return true; |
| |
| default: |
| if (b || true) |
| j = 10; |
| break; |
| // CHECK-MESSAGES: :[[@LINE-3]]:14: warning: {{.*}} to boolean operator |
| // CHECK-FIXES: {{if \(true\)}} |
| // CHECK-FIXES-NEXT: {{j = 10;}} |
| // CHECK-FIXES-NEXT: {{break;}} |
| } |
| return false; |
| } |
| |
| bool default_stmt5(int i, int j, bool b) { |
| switch (i) { |
| case 0: |
| return true; |
| |
| default: |
| if (b || false) |
| j = -20; |
| break; |
| // CHECK-MESSAGES: :[[@LINE-3]]:14: warning: {{.*}} to boolean operator |
| // CHECK-FIXES: {{if \(b\)}} |
| // CHECK-FIXES-NEXT: {{j = -20;}} |
| } |
| return false; |
| } |
| |
| bool default_stmt6(int i, int j, bool b) { |
| switch (i) { |
| case 0: |
| return true; |
| |
| default: |
| return i > 0 ? true : false; |
| // CHECK-MESSAGES: :[[@LINE-1]]:20: warning: {{.*}} in ternary expression result |
| // CHECK-FIXES: {{return i > 0;}} |
| } |
| return false; |
| } |
| |
| bool default_stmt7(int i, int j, bool b) { |
| switch (i) { |
| case 0: |
| return true; |
| |
| default: |
| return i > 0 ? false : true; |
| // CHECK-MESSAGES: :[[@LINE-1]]:20: warning: {{.*}} in ternary expression result |
| // CHECK-FIXES: {{return i <= 0;}} |
| } |
| return false; |
| } |
| |
| bool default_stmt8(int i, int j, bool b) { |
| switch (i) { |
| case 0: |
| return true; |
| |
| default: |
| if (true) |
| j = 10; |
| else |
| j = -20; |
| break; |
| // CHECK-MESSAGES: :[[@LINE-5]]:9: warning: {{.*}} in if statement condition |
| // CHECK-FIXES: {{j = 10;$}} |
| // CHECK-FIXES-NEXT: {{break;$}} |
| } |
| return false; |
| } |
| |
| bool default_stmt9(int i, int j, bool b) { |
| switch (i) { |
| case 0: |
| return true; |
| |
| default: |
| if (false) |
| j = -20; |
| else |
| j = 10; |
| break; |
| // CHECK-MESSAGES: :[[@LINE-5]]:9: warning: {{.*}} in if statement condition |
| // CHECK-FIXES: {{j = 10;}} |
| // CHECK-FIXES-NEXT: {{break;}} |
| } |
| return false; |
| } |
| |
| bool default_stmt10(int i, int j, bool b) { |
| switch (i) { |
| case 0: |
| return true; |
| |
| default: |
| if (j > 10) |
| return true; |
| else |
| return false; |
| // CHECK-MESSAGES: :[[@LINE-3]]:14: warning: {{.*}} in conditional return statement |
| // CHECK-FIXES: {{return j > 10;}} |
| } |
| return false; |
| } |
| |
| bool default_stmt11(int i, int j, bool b) { |
| switch (i) { |
| case 0: |
| return true; |
| |
| default: |
| if (j > 10) |
| return false; |
| else |
| return true; |
| // CHECK-MESSAGES: :[[@LINE-3]]:14: warning: {{.*}} in conditional return statement |
| // CHECK-FIXES: {{return j <= 10;}} |
| } |
| return false; |
| } |
| |
| bool default_stmt12(int i, int j, bool b) { |
| switch (i) { |
| case 0: |
| return true; |
| |
| default: |
| if (j > 10) |
| b = true; |
| else |
| b = false; |
| return b; |
| // CHECK-MESSAGES: :[[@LINE-4]]:11: warning: {{.*}} in conditional assignment |
| // CHECK-FIXES: {{b = j > 10;}} |
| // CHECK-FIXES-NEXT: {{return b;}} |
| } |
| return false; |
| } |
| |
| bool default_stmt13(int i, int j, bool b) { |
| switch (i) { |
| case 0: |
| return true; |
| |
| default: |
| if (j > 10) |
| b = false; |
| else |
| b = true; |
| return b; |
| // CHECK-MESSAGES: :[[@LINE-4]]:11: warning: {{.*}} in conditional assignment |
| // CHECK-FIXES: {{b = j <= 10;}} |
| // CHECK-FIXES-NEXT: {{return b;}} |
| } |
| return false; |
| } |
| |
| bool default_stmt14(int i, int j, bool b) { |
| switch (i) { |
| case 0: |
| return true; |
| |
| default: |
| if (j > 10) |
| return true; |
| return false; |
| // CHECK-MESSAGES: :[[@LINE-2]]:14: warning: {{.*}} in conditional return |
| // FIXES: {{return j > 10;}} |
| } |
| return false; |
| } |
| |
| bool default_stmt15(int i, int j, bool b) { |
| switch (i) { |
| case 0: |
| return true; |
| |
| default: |
| if (j > 10) |
| return false; |
| return true; |
| // CHECK-MESSAGES: :[[@LINE-2]]:14: warning: {{.*}} in conditional return |
| // FIXES: {{return j <= 10;}} |
| } |
| return false; |
| } |
| |
| bool default_stmt16(int i, int j, bool b) { |
| switch (i) { |
| case 0: |
| return false; |
| |
| default: |
| if (j > 10) |
| return true; |
| } |
| return false; |
| } |
| |
| bool default_stmt17(int i, int j, bool b) { |
| switch (i) { |
| case 0: |
| return true; |
| |
| default: |
| if (j > 10) |
| return false; |
| } |
| return false; |
| } |
| |
| bool label_stmt0(int i, int j, bool b) { |
| label: |
| if (b == true) |
| j = 10; |
| // CHECK-MESSAGES: :[[@LINE-2]]:12: warning: {{.*}} to boolean operator |
| // CHECK-FIXES: {{if \(b\)}} |
| // CHECK-FIXES-NEXT: {{j = 10;}} |
| return false; |
| } |
| |
| bool label_stmt1(int i, int j, bool b) { |
| label: |
| if (b == false) |
| j = -20; |
| // CHECK-MESSAGES: :[[@LINE-2]]:12: warning: {{.*}} to boolean operator |
| // CHECK-FIXES: {{if \(!b\)}} |
| // CHECK-FIXES-NEXT: {{j = -20;}} |
| return false; |
| } |
| |
| bool label_stmt2(int i, int j, bool b) { |
| label: |
| if (b && true) |
| j = 10; |
| // CHECK-MESSAGES: :[[@LINE-2]]:12: warning: {{.*}} to boolean operator |
| // CHECK-FIXES: {{if \(b\)}} |
| // CHECK-FIXES-NEXT: {{j = 10;}} |
| return false; |
| } |
| |
| bool label_stmt3(int i, int j, bool b) { |
| label: |
| if (b && false) |
| j = -20; |
| // CHECK-MESSAGES: :[[@LINE-2]]:12: warning: {{.*}} to boolean operator |
| // CHECK-FIXES: {{if \(false\)}} |
| // CHECK-FIXES-NEXT: {{j = -20;}} |
| return false; |
| } |
| |
| bool label_stmt4(int i, int j, bool b) { |
| label: |
| if (b || true) |
| j = 10; |
| // CHECK-MESSAGES: :[[@LINE-2]]:12: warning: {{.*}} to boolean operator |
| // CHECK-FIXES: {{if \(true\)}} |
| // CHECK-FIXES-NEXT: {{j = 10;}} |
| return false; |
| } |
| |
| bool label_stmt5(int i, int j, bool b) { |
| label: |
| if (b || false) |
| j = -20; |
| // CHECK-MESSAGES: :[[@LINE-2]]:12: warning: {{.*}} to boolean operator |
| // CHECK-FIXES: {{if \(b\)}} |
| // CHECK-FIXES-NEXT: {{j = -20;}} |
| return false; |
| } |
| |
| bool label_stmt6(int i, int j, bool b) { |
| label: |
| return i > 0 ? true : false; |
| // CHECK-MESSAGES: :[[@LINE-1]]:18: warning: {{.*}} in ternary expression result |
| // CHECK-FIXES: {{return i > 0;}} |
| } |
| |
| bool label_stmt7(int i, int j, bool b) { |
| label: |
| return i > 0 ? false : true; |
| // CHECK-MESSAGES: :[[@LINE-1]]:18: warning: {{.*}} in ternary expression result |
| // CHECK-FIXES: {{return i <= 0;}} |
| } |
| |
| bool label_stmt8(int i, int j, bool b) { |
| label: |
| if (true) |
| j = 10; |
| else |
| j = -20; |
| // CHECK-MESSAGES: :[[@LINE-4]]:7: warning: {{.*}} in if statement condition |
| // CHECK-FIXES: {{j = 10;$}} |
| return false; |
| } |
| |
| bool label_stmt9(int i, int j, bool b) { |
| label: |
| if (false) |
| j = -20; |
| else |
| j = 10; |
| // CHECK-MESSAGES: :[[@LINE-4]]:7: warning: {{.*}} in if statement condition |
| // CHECK-FIXES: {{j = 10;}} |
| return false; |
| } |
| |
| bool label_stmt10(int i, int j, bool b) { |
| label: |
| if (j > 10) |
| return true; |
| else |
| return false; |
| // CHECK-MESSAGES: :[[@LINE-3]]:12: warning: {{.*}} in conditional return statement |
| // CHECK-FIXES: {{return j > 10;}} |
| } |
| |
| bool label_stmt11(int i, int j, bool b) { |
| label: |
| if (j > 10) |
| return false; |
| else |
| return true; |
| // CHECK-MESSAGES: :[[@LINE-3]]:12: warning: {{.*}} in conditional return statement |
| // CHECK-FIXES: {{return j <= 10;}} |
| } |
| |
| bool label_stmt12(int i, int j, bool b) { |
| label: |
| if (j > 10) |
| b = true; |
| else |
| b = false; |
| return b; |
| // CHECK-MESSAGES: :[[@LINE-4]]:9: warning: {{.*}} in conditional assignment |
| // CHECK-FIXES: {{b = j > 10;}} |
| // CHECK-FIXES-NEXT: {{return b;}} |
| } |
| |
| bool label_stmt13(int i, int j, bool b) { |
| label: |
| if (j > 10) |
| b = false; |
| else |
| b = true; |
| return b; |
| // CHECK-MESSAGES: :[[@LINE-4]]:9: warning: {{.*}} in conditional assignment |
| // CHECK-FIXES: {{b = j <= 10;}} |
| // CHECK-FIXES-NEXT: {{return b;}} |
| } |
| |
| bool label_stmt14(int i, int j, bool b) { |
| label: |
| if (j > 10) |
| return true; |
| return false; |
| // CHECK-MESSAGES: :[[@LINE-2]]:12: warning: {{.*}} in conditional return |
| // FIXES: {{return j > 10;}} |
| } |
| |
| bool label_stmt15(int i, int j, bool b) { |
| label: |
| if (j > 10) |
| return false; |
| return true; |
| // CHECK-MESSAGES: :[[@LINE-2]]:12: warning: {{.*}} in conditional return |
| // FIXES: {{return j <= 10;}} |
| } |