[PATCH] Add readability-simplify-boolean-expr check to clang-tidy

Richard legalize at xmission.com
Sun Feb 15 17:38:52 PST 2015


In http://reviews.llvm.org/D7648#123947, @ismailp wrote:

> Richard,
>
> I think this check should allow expressions originating from macros:
>
>   #define HAS_XYZ_FEATURE true
>   static /*constexpr*/ bool returnTrue() { return true; }
>   if (returnTrue() && HAS_XYZ_FEATURE);
>


I added these test cases:

  static constexpr bool truthy()
  {
      return true;
  }
  
  #define HAS_XYZ_FEATURE true
  
  void macros_and_constexprs()
  {
      int i = 0;
      bool b = (i == 0);
      if (b && truthy()) {
          i = 1;
      }
      i = 2;
      if (b && HAS_XYZ_FEATURE) {
          i = 3;
      }
      i = 4;
  }

The second test case was automatically handled by the existing code:

  llvm/tools/clang/tools/extra/test/clang-tidy/readability-simplify-bool-expr.cpp:297:14: warning: Redundant boolean constant supplied to boolean operator. [readability-simplify-boolean-expr]
      if (b && HAS_XYZ_FEATURE) {
               ^
          b
  llvm/tools/clang/tools/extra/test/clang-tidy/readability-simplify-bool-expr.cpp:287:25: note: expanded from macro 'HAS_XYZ_FEATURE'
  #define HAS_XYZ_FEATURE true
                          ^

I will look into the constexpr case.


http://reviews.llvm.org/D7648

EMAIL PREFERENCES
  http://reviews.llvm.org/settings/panel/emailpreferences/






More information about the cfe-commits mailing list