summaryrefslogtreecommitdiffstats
path: root/clang-tools-extra/test/clang-tidy/readability-simplify-bool-expr.cpp
diff options
context:
space:
mode:
authorAaron Ballman <aaron@aaronballman.com>2016-02-08 14:25:25 +0000
committerAaron Ballman <aaron@aaronballman.com>2016-02-08 14:25:25 +0000
commitf4490cab0d52ed9323ead7871baf0bbb89d662c6 (patch)
tree69e8c551ab67463eb77adcecd04e0b28b29ea772 /clang-tools-extra/test/clang-tidy/readability-simplify-bool-expr.cpp
parent1a39a34eae8e9d9755ff9f8fbf3446e3b713555c (diff)
downloadbcm5719-llvm-f4490cab0d52ed9323ead7871baf0bbb89d662c6.tar.gz
bcm5719-llvm-f4490cab0d52ed9323ead7871baf0bbb89d662c6.zip
Expand the simplify boolean expression check to handle implicit conversion of integral types to bool and improve the handling of implicit conversion of member pointers to bool.
Implicit conversion of member pointers are replaced with explicit comparisons to nullptr. Implicit conversions of integral types are replaced with explicit comparisons to 0. Patch by Richard Thomson. llvm-svn: 260096
Diffstat (limited to 'clang-tools-extra/test/clang-tidy/readability-simplify-bool-expr.cpp')
-rw-r--r--clang-tools-extra/test/clang-tidy/readability-simplify-bool-expr.cpp45
1 files changed, 40 insertions, 5 deletions
diff --git a/clang-tools-extra/test/clang-tidy/readability-simplify-bool-expr.cpp b/clang-tools-extra/test/clang-tidy/readability-simplify-bool-expr.cpp
index e3276103ded..8ae78741849 100644
--- a/clang-tools-extra/test/clang-tidy/readability-simplify-bool-expr.cpp
+++ b/clang-tools-extra/test/clang-tidy/readability-simplify-bool-expr.cpp
@@ -690,7 +690,7 @@ bool if_implicit_bool_expr(int i) {
}
}
// CHECK-MESSAGES: :[[@LINE-5]]:12: warning: {{.*}} in conditional return
-// CHECK-FIXES: {{^}} return static_cast<bool>(i & 1);{{$}}
+// CHECK-FIXES: {{^}} return (i & 1) != 0;{{$}}
bool negated_if_implicit_bool_expr(int i) {
if (i - 1) {
@@ -700,7 +700,7 @@ bool negated_if_implicit_bool_expr(int i) {
}
}
// CHECK-MESSAGES: :[[@LINE-5]]:12: warning: {{.*}} in conditional return
-// CHECK-FIXES: {{^}} return !static_cast<bool>(i - 1);{{$}}
+// CHECK-FIXES: {{^}} return (i - 1) == 0;{{$}}
bool implicit_int(int i) {
if (i) {
@@ -710,7 +710,7 @@ bool implicit_int(int i) {
}
}
// CHECK-MESSAGES: :[[@LINE-5]]:12: warning: {{.*}} in conditional return
-// CHECK-FIXES: {{^}} return static_cast<bool>(i);{{$}}
+// CHECK-FIXES: {{^}} return i != 0;{{$}}
bool explicit_bool(bool b) {
if (b) {
@@ -757,7 +757,7 @@ bool bitwise_complement_conversion(int i) {
}
}
// CHECK-MESSAGES: :[[@LINE-5]]:12: warning: {{.*}} in conditional return
-// CHECK-FIXES: {{^}} return static_cast<bool>(~i);{{$}}
+// CHECK-FIXES: {{^}} return ~i != 0;{{$}}
bool logical_or(bool a, bool b) {
if (a || b) {
@@ -830,7 +830,7 @@ void ternary_integer_condition(int i) {
bool b = i ? true : false;
}
// CHECK-MESSAGES: :[[@LINE-2]]:16: warning: {{.*}} in ternary expression result
-// CHECK-FIXES: bool b = static_cast<bool>(i);{{$}}
+// CHECK-FIXES: bool b = i != 0;{{$}}
bool non_null_pointer_condition(int *p1) {
if (p1) {
@@ -895,3 +895,38 @@ bool preprocessor_in_the_middle(bool b) {
// CHECK-MESSAGES: :[[@LINE-6]]:12: warning: {{.*}} in conditional return
// CHECK-FIXES: {{^}} if (b) {
// CHECK-FIXES: {{^}}#define SOMETHING_WICKED false
+
+bool integer_not_zero(int i) {
+ if (i) {
+ return false;
+ } else {
+ return true;
+ }
+}
+// CHECK-MESSAGES: :[[@LINE-5]]:12: warning: {{.*}} in conditional return
+// CHECK-FIXES: {{^}} return i == 0;{{$}}
+
+class A {
+public:
+ int m;
+};
+
+bool member_pointer_nullptr(int A::*p) {
+ if (p) {
+ return true;
+ } else {
+ return false;
+ }
+}
+// CHECK-MESSAGES: :[[@LINE-5]]:12: warning: {{.*}} in conditional return
+// CHECK-FIXES: return p != nullptr;{{$}}
+
+bool integer_member_implicit_cast(A *p) {
+ if (p->m) {
+ return true;
+ } else {
+ return false;
+ }
+}
+// CHECK-MESSAGES: :[[@LINE-5]]:12: warning: {{.*}} in conditional return
+// CHECK-FIXES: return p->m != 0;{{$}}
OpenPOWER on IntegriCloud