<div dir="ltr"><br><div class="gmail_extra"><br><br><div class="gmail_quote">On Sun, Jan 12, 2014 at 6:53 PM, Aaron Ballman <span dir="ltr"><<a href="mailto:aaron@aaronballman.com" target="_blank">aaron@aaronballman.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div class="im">> That's good news -- thanks for confirming.<br>

><br>
> The feature detection macro itself will still need to have a different name<br>
> (or some other mechanism) so it can be used compatibly with existing clang<br>
> deployments, because _has_attribute() currently emits a parse error instead<br>
> of gracefully returning 0 when passed the new argument syntax:<br>
><br>
> tmp/attr2.cpp:1:5: error: builtin feature check macro requires a<br>
> parenthesized identifier<br>
> #if __has_attribute(__attribute__((weakref)))<br>
>     ^<br>
<br>
</div>Good catch. Unfortunately, __has_attribute is really the best<br>
identifier for the macro, so I am loathe to let it go.<br>
<br>
Due to the current design of __has_attribute, we can't get away with "<br>
magic" by expanding the non-function-like form into a value that could<br>
be tested. So we would really have to pick a new name if we are<br>
worried about this.<br>
<br>
Suggestions on the name are welcome.</blockquote><div><br></div><div>Ok, I'll bite:</div><div><br></div><div><div>__has_attribute_written_as([[foo]])</div></div><div>__has_attribute_syntax([[foo]])</div><div>__has_attribute_spelling([[foo]])</div>
<div><br></div><div>-- Sean Silva</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"> Regardless of the name picked, if<br>

it's different from __has_attribute, we should deprecate the existing<br>
usage since the proposed implementation is backwards compatible and<br>
the existing __has_attribute is not forwards-compatible.<br>
<div class="im"><br>
> For forward compatibility your new version should warn, rather than emitting<br>
> an error, upon encountering invalid attribute syntaxes that may be valid in<br>
> future standards or other language dialects (e.g. single-braced C++/CLI []<br>
> attributes should return 0, indicating "unsupported" rather than triggering<br>
> a parse error).<br>
<br>
</div>I agree, and will implement for the next round.<br>
<span class=""><font color="#888888"><br>
~Aaron<br>
</font></span><div class=""><div class="h5">_______________________________________________<br>
cfe-commits mailing list<br>
<a href="mailto:cfe-commits@cs.uiuc.edu">cfe-commits@cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits</a><br>
</div></div></blockquote></div><br></div></div>