[cfe-commits] [PATCH] forbid attributes on friend member function declaration

Michael Han fragmentshaders at gmail.com
Mon Nov 26 18:43:27 PST 2012


Hi Richard,

I haven't looked into check it in Sema yet. I had the impression that this
type of checks should be performed in parser if possible. Here is what I am
thinking.

There are two cases to deal with here
- attributes appear before decl specifier of function:
  [[]] friend into foo();
  This case can already be detected in parser using
ParsedAttributesWithRange.

- attributes appear after function declarator id
  friend int foo [[]] ();
  Attributes in this case are parsed as part of parsing function
declarator, so we need some way to pass the parsed attributes to caller
where the syntactic checks are handled. I was using AttributeList for this.
Without using it, it seems there are two additional options:
Update Declarator so it can return a list of source ranges of C++11
attributes that appertain to the declarator, as the source ranges are
what's required to emit the "attributes not allowed here" type of
diagnostic.

Or

Update ParseDeclarator so it takes an additional parameter of
ParsedAttributesWithRange. It's probably not worth doing so as
ParseDeclarator is invoked in a lot of places and this second parameter
will only be useful once.

What do you think? I can look into sema check if that is the right
direction to go.

Cheers
Michael

On Mon, Nov 26, 2012 at 1:56 PM, Richard Smith <richard at metafoo.co.uk>wrote:

> Hi Michael,
>
> It's not OK to use Sema's AttributeList directly from within lib/Parse.
> Have you considered performing the check inside Sema instead?
>
> On Fri, Nov 23, 2012 at 3:58 PM, Michael Han <fragmentshaders at gmail.com>wrote:
>
>> Sorry missing title in last email; resend patch with title this time..
>>
>> ---------- Forwarded message ----------
>> From: Michael Han <fragmentshaders at gmail.com>
>> Date: Fri, Nov 23, 2012 at 3:53 PM
>> Subject:
>> To: cfe-commits at cs.uiuc.edu
>>
>>
>> Hi,
>>
>> This patch implements C++11 [dcl.attr.grammar] p4: If an
>> attribute-specifier-seq appertains to a friend declaration, that declaration
>> shall be a definition. Please review.
>>
>> Cheers
>> Michael
>>
>>
>> _______________________________________________
>> cfe-commits mailing list
>> cfe-commits at cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20121126/72bedcf0/attachment.html>


More information about the cfe-commits mailing list