dblaikie marked an inline comment as done.
dblaikie added a comment.

In D102122#3539812 <https://reviews.llvm.org/D102122#3539812>, @aaron.ballman 
wrote:

> In D102122#3538668 <https://reviews.llvm.org/D102122#3538668>, @dblaikie 
> wrote:
>
>> Sorry, with all the layers in the previous messages I'm not sure what the 
>> summary is. Sounds like the summary is "this is OK to continue work in the 
>> direction of supporting [[clang::warn_unused_result]] (only that spelling) 
>> for typedefs in C and C++ (for compatibility with C/so that C headers, like 
>> LLVM C's APIs can still be parsed as C++), while considering some of the 
>> complications raised in the WG21 discussion"?
>
> Yup! Though I agree with Richard's later comment that we could maybe also 
> extend the `__attribute__((warn_unused_result))` spelling as well.
>
>> OK, so I updated this patch with a very first draft/attempt at that - I 
>> wasn't sure how to add typedef support to only the clang spelling - so I 
>> created a new attribute name in the .td file (is there a better/more 
>> suitable way?)
>
> I would not go that route. Instead, I'd add it as a subject to the existing 
> attribute, and then add a spelling-based restriction in 
> `handleWarnUnusedResult()` to give an appropriate diagnostic if the subject 
> is wrong based on the spelling used. Something like:
>
>   if ((!AL.isGNUAttributeSyntax() || !(AL.isStandardAttributeSyntax() && 
> AL.isClangScope())) && isa<TypedefNameDecl>(D))
>     Diag(...);
>
> (Note, you may need to extend ParsedAttr somewhat, I don't recall if we have 
> all those helper functions explicitly.)

Ah, OK. Added those (& I think the first `||` was meant to be a `&&` there, 
then it seems to do what's expected)

How's this look now, then?

One drawback is the built-in attribute warnings that mention which entities the 
attribute is valid on will mention typedefs even when the user uses a spelling 
that wouldn't be valid there - so the user might try it there, then get the 
follow-on warning (totally open to wordsmithing that warning, too - just 
placeholder words - also made it part of the same group as the 
warn_unused_result warning itself - if you disable that warning, then 
presumably you don't care about the warning being in the wrong place either, to 
some extent).


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D102122

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

Reply via email to