<p dir="ltr"><br>
On 5 Oct 2013 16:15, "Aaron Ballman" <<a href="mailto:aaron@aaronballman.com">aaron@aaronballman.com</a>> wrote:<br>
><br>
> I noticed that we have a diagnostic "err_repeat_attribute", but<br>
> currently only vecreturn is making use of it.<br>
><br>
> This seems like it is something we could generalize across attributes<br>
> relatively easily, but there appears to be no documentation (even in<br>
> the C++ standard) as to whether duplicate attributes are acceptable or<br>
> not for any given attribute.</p>
<p dir="ltr">For a standard c++11 attribute, there is usually (always?) a restriction that the attribute cannot be repeated in the same attribute-specifier.</p>
<p dir="ltr">> As best I can tell, most attributes should diagnose a duplicate on the<br>
> same subject.  The exceptions, as best I can gather, are:<br>
><br>
> alloc_size<br>
> format_arg<br>
> nonnull<br>
> ownership_holds<br>
> ownership_returns<br>
> ownership_takes<br>
> argument_with_type_tag<br>
> pointer_with_type_tag<br>
><br>
> Basically, anything which allows you to specify an argument index as<br>
> an attribute parameter seems like it could have a duplicate attribute.<br>
><br>
> Would it make sense to add a generalized duplicate attribute test in<br>
> SemaDeclAttr that emits an error when a duplicate is found, except for<br>
> the above cases?<br>
><br>
> ~Aaron<br>
</p>