[PATCH] D130181: [clang-tidy] Add readability-use-early-exits check

Nathan James via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Tue Aug 30 01:54:44 PDT 2022


njames93 marked an inline comment as done.
njames93 added inline comments.


================
Comment at: clang-tools-extra/clang-tidy/readability/UseEarlyExitsCheck.cpp:66
+  if (needsParensAfterUnaryNegation(Condition)) {
+    Diag << FixItHint::CreateInsertion(Condition->getBeginLoc(), "!(")
+         << FixItHint::CreateInsertion(
----------------
JonasToth wrote:
> did you consider comma expressions?
> 
> `if (myDirtyCode(), myCondition && yourCondition)`. It seems to me, that the transformation would be incorrect.
Comma operator is a binary operator, so the transformation would wrap the whole expression in parens.


================
Comment at: clang-tools-extra/docs/clang-tidy/checks/readability/use-early-exits.rst:63
+    void Process(bool A, bool B) {
+      if (A && B) {
+        // Long processing.
----------------
JonasToth wrote:
> if this option is false, the transformation would be `if(!(A && B))`, right?
> 
> should demorgan rules be applied or at least be mentioned here? I think transforming to `if (!A || !B)` is at least a viable option for enough users.
Once this is in, I plan to merge some common code with the simplify-boolean-expr logic for things like demorgan processing. Right now the transformation happens, the simplify boolean suggests a demorgan transformation of you run the output through clang tidy.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D130181/new/

https://reviews.llvm.org/D130181



More information about the cfe-commits mailing list