[cfe-dev] [clang-tidy] Adding a new use nodiscard checker (help needed)

MyDeveloper Day via cfe-dev cfe-dev at lists.llvm.org
Thu Dec 6 12:13:07 PST 2018


Thanks for the pointers.. this led me to look a little deeper at some of
the other checkers

looks like ConstReturnTypeCheck uses getInnerLocStart() to locate the
return type

Substituting this in seems to find the correct location, but I suspect this
doesn't work well for the training return type

auto retLoc = MatchedDecl->getInnerLocStart();

  // This function could be marked [[nodiscard]]
  diag(retLoc, "function %0 should be marked [[nodiscard]]")
      << MatchedDecl << FixItHint::CreateInsertion(retLoc, "[[nodiscard]]
");


---------------------------------------------------------------

test.cxx:18:5: warning: function 'empty' should be marked [[nodiscard]]
[modernize-use-nodiscard]
    bool empty() const
    ^
    [[nodiscard]]
test.cxx:22:5: warning: function 'empty' should be marked [[nodiscard]]
[modernize-use-nodiscard]
    bool empty(int val) const
    ^
    [[nodiscard]]
test.cxx:50:5: warning: function 'empty' should be marked [[nodiscard]]
[modernize-use-nodiscard]
    const bool empty() const
    ^
    [[nodiscard]]
test.cxx:55:5: warning: function 'empty' should be marked [[nodiscard]]
[modernize-use-nodiscard]
    inline const bool empty() const
    ^
    [[nodiscard]]

On Thu, Dec 6, 2018 at 7:19 PM Stephen Kelly via cfe-dev <
cfe-dev at lists.llvm.org> wrote:

> On 06/12/2018 19:08, MyDeveloper Day via cfe-dev wrote:
> > I'm currently using (following a series of trail and errors) to find the
> > location just before the return type
>
> Here are the locations you can get for FunctionDecls:
>
>   http://ec2-52-14-16-249.us-east-2.compute.amazonaws.com:10240/z/oiG2nf
>
> See also if you have not already:
>
>
>
> https://steveire.wordpress.com/2018/11/11/future-developments-in-clang-query/
>
> If there isn't a location in that output for what you need, then you are
> going to have to check the tokens yourself. Many existing clang tidy
> checks do things like this due to lack of location for a particular need.
>
> Thanks,
>
> Stephen.
>
> _______________________________________________
> cfe-dev mailing list
> cfe-dev at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20181206/eec48266/attachment.html>


More information about the cfe-dev mailing list