[cfe-dev] warn_unused_result attribute on class definition not applying to methods declared in that class

Craig Topper via cfe-dev cfe-dev at lists.llvm.org
Tue Apr 18 00:05:28 PDT 2017


I think this is because of the behavior outlined here.

  /// \brief Returns true if this function or its return type has the
  /// warn_unused_result attribute. If the return type has the attribute and
  /// this function is a method of the return type's class, then false will
be
  /// returned to avoid spurious warnings on member methods such as
assignment
  /// operators.
  bool hasUnusedResultAttr() const { return getUnusedResultAttr() !=
nullptr; }

~Craig

On Mon, Apr 17, 2017 at 11:48 PM, Craig Topper <craig.topper at gmail.com>
wrote:

> It seems if warn_unused_result is put on a class definition it doesn't
> apply to any of the methods in that class that return the class type?
>
> This test should generate 2 warnings but only generates one.
>
> https://godbolt.org/g/kImv9k
>
> The ArrayRef and APInt classes both do this. I accidentally created a case
> where I didn't consume the result of APInt::trunc and received no warning.
>
> ~Craig
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20170418/aa1bc0da/attachment.html>


More information about the cfe-dev mailing list