[PATCH] D16308: clang-tidy Enhance readability-simplify-boolean-expr check to handle implicit conversions of integral types to bool and member pointers

Aaron Ballman via cfe-commits cfe-commits at lists.llvm.org
Tue Jan 19 09:45:41 PST 2016


aaron.ballman added inline comments.

================
Comment at: clang-tidy/readability/SimplifyBooleanExprCheck.h:50
@@ -49,3 +49,3 @@
 ///      opposite condition.
 ///   4. Implicit conversions of pointer to `bool` are replaced with explicit
 ///      comparisons to `nullptr`.
----------------
LegalizeAdulthood wrote:
> aaron.ballman wrote:
> > Can you also update for member pointers?
> I can explicitly state that; to me "pointers" is a term that includes member pointers.
Hmm, perhaps I am being too pedantic. I'm used to thinking of member pointers as different from pointers because it's that way in standardese.

================
Comment at: clang-tidy/readability/SimplifyBooleanExprCheck.h:77
@@ -74,3 +76,3 @@
 ///      implicit conversion of `i & 1` to `bool` and becomes
-///      `bool b = static_cast<bool>(i & 1);`.
+///      `bool b = i & 1 != 0;`.
 ///
----------------
LegalizeAdulthood wrote:
> aaron.ballman wrote:
> > To me, this does not improve readability -- I now have to think much harder about operator precedence. Including parens would help significantly, IMO, so that it becomes `(i & 1) != 0`.
> To clarify: You'd like to see parens around the expression when it is a binary operator, correct?
> 
> When it is a variable, there's no need to add parentheses.
Correct; if it's just a DeclRefExpr or unary operator then parens aren't useful; but if it's a binary operator, I think parens may help clarify.


http://reviews.llvm.org/D16308





More information about the cfe-commits mailing list