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

In D123479#3442968 <https://reviews.llvm.org/D123479#3442968>, 
@LegalizeAdulthood wrote:

> In D123479#3442062 <https://reviews.llvm.org/D123479#3442062>, @njames93 
> wrote:
>
>> Would it not be better if these parens were stripped in the fixit as they 
>> are unnecessary in the enum value decl?

To me, that would be ideal, but not strictly necessary (and perhaps doesn't 
scale super well across all fix-its) because the code is still correct with the 
parens, just a bit ugly. We have other similar situations with fix-its (like 
formatting).

> I prefer checks to do one thing only in a straightforward manner.
>
> It's easier to place things before and after the macro expansion rather than 
> modify the contents
> of the expansion.
>
> It doesn't feel like the responsibility of this check is to decide which 
> parentheses are necessary or not.

Hmm, I'm more on the fence. On the one hand, yes. On the other hand, there's no 
automatic cleanup to remove parentheses in clang-format (and there's no way I 
would trust clang-format if it added one, frankly). This check is suggesting a 
fix-it and a fix-it that keeps the parentheses means the user may feel 
compelled to go and manually change their code anyway, which largely removes 
the benefit of having a fix-it in the first place. That said, the fix-it 
produces correct code, and we could add a readability-redundant-parentheses 
check to clang-tidy if we cared deeply about redundant parens. We've had at 
least one attempt at that I could remember (and I hazily recall there may have 
been a second attempt), so there's some interest in that. That would solve the 
problem in a more general way than expecting each author of a fix-it to 
consider parens individually.

Regardless, this is incremental progress and it solves a real bug. LGTM aside 
from reflowing a comment.



================
Comment at: clang-tools-extra/clang-tidy/modernize/MacroToEnumCheck.cpp:351-354
+    for (; Begin < MacroTokens.size() / 2; ++Begin, --End) {
+      if (!MacroTokens[Begin].is(tok::TokenKind::l_paren) ||
+          !MacroTokens[End].is(tok::TokenKind::r_paren))
+        break;
----------------
Start at both ends and work towards the middle. This is clever, I like this!


================
Comment at: 
clang-tools-extra/docs/clang-tidy/checks/modernize-macro-to-enum.rst:20-23
+  The above expressions may also be surrounded by a single matching pair of
+  parentheses.
+  More complicated integral constant expressions are not currently recognized
+  by this check.
----------------
Reflowing the comment to 80 cols


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D123479

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

Reply via email to