[cfe-dev] [PATCH] New syntax and functionality for __has_attribute

Aaron Ballman aaron at aaronballman.com
Sun Jan 12 16:49:21 PST 2014


On Sun, Jan 12, 2014 at 7:38 PM, Sean Silva <silvas at purdue.edu> wrote:
>
>
>
> On Sun, Jan 12, 2014 at 6:53 PM, Aaron Ballman <aaron at aaronballman.com>
> wrote:
>>
>> > That's good news -- thanks for confirming.
>> >
>> > The feature detection macro itself will still need to have a different
>> > name
>> > (or some other mechanism) so it can be used compatibly with existing
>> > clang
>> > deployments, because _has_attribute() currently emits a parse error
>> > instead
>> > of gracefully returning 0 when passed the new argument syntax:
>> >
>> > tmp/attr2.cpp:1:5: error: builtin feature check macro requires a
>> > parenthesized identifier
>> > #if __has_attribute(__attribute__((weakref)))
>> >     ^
>>
>> Good catch. Unfortunately, __has_attribute is really the best
>> identifier for the macro, so I am loathe to let it go.
>>
>> Due to the current design of __has_attribute, we can't get away with "
>> magic" by expanding the non-function-like form into a value that could
>> be tested. So we would really have to pick a new name if we are
>> worried about this.
>>
>> Suggestions on the name are welcome.
>
>
> Ok, I'll bite:
>
> __has_attribute_written_as([[foo]])
> __has_attribute_syntax([[foo]])
> __has_attribute_spelling([[foo]])

I kind of like __has_attribute_syntax, truth be told.

Thank you for the suggestions!

~Aaron



More information about the cfe-commits mailing list