aaron.ballman accepted this revision.
aaron.ballman added a comment.
This revision is now accepted and ready to land.

LGTM once the documentation nit is fixed up.



================
Comment at: 
clang-tools-extra/clang-tidy/readability/ElseAfterReturnCheck.cpp:193
   if (checkConditionVarUsageInElse(If) != nullptr) {
+    if (!WarnOnConditionVariables)
+      return;
----------------
njames93 wrote:
> aaron.ballman wrote:
> > njames93 wrote:
> > > aaron.ballman wrote:
> > > > Would it make sense to hoist this into the previous `if` statement so 
> > > > we don't bother checking the condition var use in the first place if 
> > > > we're just going to ignore the results?
> > > That wouldn't work, we need to see if there is a condition variable that 
> > > needs refactoring first before we can disregard it, Or am I missing 
> > > something?
> > I was suggesting:
> > ```
> > if (WarnOnConditionVariables && checkConditionVarUsageInElse(If)) {
> >  ...
> > }
> > if (WarnOnConditionVariables && checkInitDeclUsageInElse(If) {
> > ...
> > }
> > ```
> > The effect is that we don't bother checking for the situations we weren't 
> > going to warn about anyway. But maybe I'm the one missing something?
> I think you may be this time. The reason being those `if` statements have a 
> `return` at the end. If I followed how you have it layed out, those returns 
> would never hit regardless of whether there was a condition variable that 
> needed handling or not.
Oh! So you're talking about the case where `IsLastInScope` and 
`WarnOnUnfixable` are both `false`, okay I see that now. I think the logic 
could still be rearranged to avoid doing work you're just going to immediately 
throw away, but I don't think it's critical (or really needed for this patch).


================
Comment at: 
clang-tools-extra/docs/clang-tidy/checks/readability-else-after-return.rst:74
+
+   When `true`, The check will attempt to refactor a variable defined inside
+   the condition of the ``if`` statement that is used in the ``else`` branch.
----------------
aaron.ballman wrote:
> njames93 wrote:
> > aaron.ballman wrote:
> > > The -> the
> > > 
> > > I'm a bit unclear on what "attempt to refactor" means -- I sort of 
> > > understand it to mean that if this option is true then the check will not 
> > > produce a fix-it for variables defined inside the condition of the if 
> > > statement that is used in the else branch, but will produce a diagnostic. 
> > > However, the check behavior seems to also remove the diagnostic in this 
> > > case (not just the fix-it), so I'm not certain I'm reading this right.
> > Good spot, the check behaviour is also removing the diagnostic as well as 
> > the fix it.
> > That behaviour should probably be changed to removing the Fix-It when this 
> > option is `false`, but then diagnostic behaviour should follow what 
> > `WarnOnUnfixable` dictates.
> I think that makes sense. Then the option can be renamed to remove the 
> "Refactor" bit and probably be something more like `WarnOnConditionVariables` 
> or something?
Still have to fix the capitalization issues with `The` and `Emit`.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D82824



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

Reply via email to