Custom attributes (again)

Andrei Alexandrescu SeeWebsiteForEmail at erdani.org
Fri Apr 6 13:08:38 PDT 2012


On 4/6/12 2:47 PM, Timon Gehr wrote:
> There is no existing in-language solution whose only bad property is its
> ugliness, because it cannot be allowed to introduce additional symbols.

You can always assume fresh variables even though indeed there's no 
support for them. Just use __ as prefix and then combine with a cookie 
and the existing symbol name. There will be no clashes.

>> All: foreach, scope, operator overloading - wherever we used lowerings
>> it's been an unqualified success. I am only sorry we didn't use them
>> more often and more systematically.

I forgot the new lambda syntax ("=>") was defined as a lowering and as a 
consequence is came virtually bug free.

> I think they have been applied where they were appropriate. What other
> existing language features would you rather have specified as a lowering?

Some array and associative array literals and operations. All object 
copying.

> Anyway, how does the argument apply to the custom attribute case? The
> specification of how custom attributes work is certainly simpler and
> more clear than the specification of how the 'code that is too ugly to
> be written by hand' is generated and getting it right should be
> comparably difficult for both. The solution that uses a lowering would
> need additional compiler support for hiding additionally generated
> symbols. This makes the lowering even harder to follow for someone who
> wants to get started on custom attributes. It just seems kludgy to me.

Expressing attributes in terms of what they do within attribute-less D 
is crucial to keeping both definition and implementation simple. Hidden 
symbols are a non-issue.


Andrei


More information about the Digitalmars-d mailing list