alexfh added inline comments.

================
Comment at: lib/StaticAnalyzer/Checkers/DeadStatusChecker.cpp:33
+
+    const Expr *hasNullptr(const BinaryOperator *BO) const {
+      const Expr *ret = nullptr;
----------------
george.karpenkov wrote:
> Could this be rewritten as a matcher instead? Surely there must be one 
> comparing the literal to null?
For this particular part a matchers-based solution might be a bit wordy:

  binaryOperator(anyOf(
    allOf(hasLHS(ignoringParenCasts(nullPointerConstant())), 
hasRHS(expr().bind("other"))),
    allOf(hasRHS(ignoringParenCasts(nullPointerConstant())), 
hasLHS(expr().bind("other")))))

But maybe it's time to add a helper matcher similar to hasEitherOperand, for 
example:
  inline internal::Matcher<BinaryOperator> hasOperands(
      const internal::Matcher<Expr> &One, const internal::Matcher<Expr> 
&Another) {
    return anyOf(allOf(hasLHS(One), hasRHS(Another)), allOf(hasRHS(One), 
hasLHS(Another)));
  }

This can be done locally, but I wouldn't object adding it to ASTMatchers.h, 
since it could already be used a few times in the existing code (at least in 
clang-tidy/bugprone/IncorrectRoundingsCheck.cpp and 
clang-tidy/misc/RedundantExpressionCheck.cpp).


Repository:
  rC Clang

https://reviews.llvm.org/D47554



_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to