aaron.ballman added a comment.

In D55793#1335243 <https://reviews.llvm.org/D55793#1335243>, @m4tx wrote:

> In D55793#1333723 <https://reviews.llvm.org/D55793#1333723>, @riccibruno 
> wrote:
>
> > In D55793#1333691 <https://reviews.llvm.org/D55793#1333691>, @m4tx wrote:
> >
> > > Don't use `CXXRecordDecl::accessSpecs()`, use unique comments in tests.
> >
> >
> > Thanks! `CXXRecordDecl` is already huge and so adding iterators for a 
> > single checker is in my opinion not a good idea (especially if the 
> > alternative is actually less code).
> >  Would it make sense to also issue a diagnostic where the first access 
> > specifier is redundant (ie `public` in a `struct`, and `private` in a 
> > `class`) ?
>
>
> Yes, I was thinking about the same thing! However, I believe that some people 
> may find this kind of "redundant" access specs actually more readable, so 
> maybe it makes sense to add a check option for this to allow users to disable 
> it?


I'm on the fence about whether this needs to be an option or not. Perhaps 
having some data on the rate of diagnosis would be helpful here -- can you try 
adding the feature and running it over some large code bases to see if the 
implicit access spec warning triggers a lot more than expected? Also, I kind of 
think this check should be named `readability-redundant-access-specifiers` 
instead of `duplicated` if it's going to consider implicit access specifiers 
(since the user doesn't write those, "duplicate" may be surprising).



================
Comment at: clang-tidy/readability/DuplicatedAccessSpecifiersCheck.cpp:31
+
+  AccessSpecDecl const *lastAccessDecl = nullptr;
+  for (DeclContext::specific_decl_iterator<AccessSpecDecl>
----------------
aaron.ballman wrote:
> Please switch to `const AccessSpecDecl *`. Also, that should be 
> `LastAccessDecl` per the naming conventions.
Still need to switch where the `const` is.


================
Comment at: clang-tidy/readability/DuplicatedAccessSpecifiersCheck.cpp:43
+        LastASDecl->getAccess() == ASDecl->getAccess()) {
+      // Ignore macro expansions
+      if (ASDecl->getLocation().isMacroID() ||
----------------
Add a full stop at the end of the sentence.


================
Comment at: clang-tidy/readability/DuplicatedAccessSpecifiersCheck.cpp:51
+      diag(ASDecl->getLocation(), "duplicated access specifier")
+          << MatchedDecl
+          << FixItHint::CreateRemoval(ASDecl->getSourceRange());
----------------
There is no %0 in the diagnostic string, so I'm not certain what this argument 
is trying to print out. Did you mean `ASDecl->getSourceRange()` for the 
underlining?


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

https://reviews.llvm.org/D55793



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

Reply via email to