Custom attributes (again)

Andrei Alexandrescu SeeWebsiteForEmail at erdani.org
Fri Apr 6 12:15:33 PDT 2012


On 4/6/12 10:09 AM, Timon Gehr wrote:
>> Speaking of the distinction, it would be great if we arranged things
>> such that attributes are a lowering to existing D (i.e. the compiler
>> rewrites a nice attribute syntax into clunky D code you wouldn't want to
>> write by hand).
>>
>
> What would that look like?

Essentially we want to associate with any symbol (be it a type, 
function, method, or whatnot) some extra information in the form of a 
tuple of key/value pairs. The value can be anything CTFE. How would one 
do that "by hand", albeit ugly and verbose? Once we get the desired 
functionality, we work back on a syntax for it. And we're done.

>> Lowerings have worked miracles for us in terms of keeping language
>> semantics simple and reducing implementation bugs.
>
> What do you have in mind here?

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.

> All lowerings I am aware of are trivial ones and their implementation
> resulted in sloppy error handling (eg: foreach) for no clear benefit.

Defining foreach as a lowering clarifies to both the library author and 
the user what the expectations are.

> Some of them (eg: with statement) have even made the implementation bug
> situation worse.

"with" is not implemented via a lowering.


Andrei



More information about the Digitalmars-d mailing list