Added a 'RefactorConditionVariables' option to control how the check handles condition variables
Details
Diff Detail
- Repository
- rG LLVM Github Monorepo
Event Timeline
clang-tools-extra/docs/clang-tidy/checks/readability-else-after-return.rst | ||
---|---|---|
67 | Emit -> emit | |
74 | 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. |
clang-tools-extra/docs/clang-tidy/checks/readability-else-after-return.rst | ||
---|---|---|
74 | Good spot, the check behaviour is also removing the diagnostic as well as the fix it. |
clang-tools-extra/docs/clang-tidy/checks/readability-else-after-return.rst | ||
---|---|---|
74 | 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? |
clang-tools-extra/clang-tidy/readability/ElseAfterReturnCheck.cpp | ||
---|---|---|
193 | 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? |
clang-tools-extra/clang-tidy/readability/ElseAfterReturnCheck.cpp | ||
---|---|---|
193 | 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? |
clang-tools-extra/clang-tidy/readability/ElseAfterReturnCheck.cpp | ||
---|---|---|
193 | 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. |
LGTM once the documentation nit is fixed up.
clang-tools-extra/clang-tidy/readability/ElseAfterReturnCheck.cpp | ||
---|---|---|
193 | 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). | |
clang-tools-extra/docs/clang-tidy/checks/readability-else-after-return.rst | ||
74 | Still have to fix the capitalization issues with The and Emit. |
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?