[PATCH] D65919: [clang-tidy] Add llvm-prefer-register-over-unsigned check and apply it to LLVM
Daniel Sanders via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Fri Aug 9 16:14:47 PDT 2019
dsanders marked 3 inline comments as done.
dsanders added inline comments.
================
Comment at: clang-tools-extra/clang-tidy/llvm/PreferRegisterOverUnsignedCheck.cpp:48-51
+ for (const auto *UsingDirective: Context->using_directives())
+ if (UsingDirective->getNominatedNamespace()
+ ->getQualifiedNameAsString() == "llvm")
+ Replacement = "Register";
----------------
dsanders wrote:
> There's something not quite right here but I haven't figured out what yet. One of the tests (apply_2()) is failing (which is odd because I ran `ninja check-clang-tools` before posting the patch) because the `using namespace llvm` in the function scope doesn't show up in the DeclContext for the function. Am I looking in the wrong place for it?
>
> More generally, I suspect there's an easier way to omit the `llvm::` than the way I'm using on lines 43-52.
I've given in on trying to elide the `llvm::` for this case as the `using namespace llvm` inside a function doesn't seem to be easily discoverable and doesn't occur in practice
================
Comment at: clang-tools-extra/clang-tidy/llvm/PreferRegisterOverUnsignedCheck.cpp:53
+ }
+ diag(UserVarDecl->getLocation(), "use '%0'", DiagnosticIDs::Note)
+ << Replacement
----------------
aaron.ballman wrote:
> dsanders wrote:
> > aaron.ballman wrote:
> > > I don't think you should issue a second diagnostic on the same line. Instead, only issue the previous diagnostic with the fixit attached to it.
> > I don't mind changing this but I thought I should mention that I'm following the example set by the code generated by add_new_check.py which has the diagnostic separate from the note with the fixit:
> > ```
> > diag(MatchedDecl->getLocation(), "function %%0 is insufficiently awesome")
> > << MatchedDecl;
> > diag(MatchedDecl->getLocation(), "insert 'awesome'", DiagnosticIDs::Note)
> > << FixItHint::CreateInsertion(MatchedDecl->getLocation(), "awesome_");
> > ```
> > Is the example doing it the right way?
> That script is intended to generate boilerplate so that you don't have to and to show a very minimal example of how to print output. So it's both correct and not particularly helpful for real checks at the same time, if that makes sense.
I guess it makes sense to have one example of a warning and one of a note. It might be worth adding a comment suggesting to those new to clang-tidy that they should try to emit a single 'this is wrong; do this' diagnostic rather than the two separate ones from the example but that's not for this patch at least.
Thanks
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D65919/new/
https://reviews.llvm.org/D65919
More information about the cfe-commits
mailing list