Custom attributes (again)

Bernard Helyer b.helyer at gmail.com
Fri Apr 6 00:31:50 PDT 2012


On Friday, 6 April 2012 at 06:47:56 UTC, Walter Bright wrote:
> On 4/5/2012 5:00 AM, Manu wrote:
> > C# and Java both have attributes, following these established
> design patterns, I
> > don't think there should be any mystery over how they should
> be implemented.
>
> I was thinking of something along the lines of what has been 
> proposed here earlier:
>
>   @attr(identifier = expression)
>
> as a storage class, like:
>
>   @attr(foo = bar + 1) int x;
>
> and then:
>
>   __traits(hasAttribute, x, foo)
>
> would return true, and:
>
>   __traits(getAttribute, x, foo)
>
> would return the expression (bar+1). The expression would be 
> compile-time only, evaluated at the point of declaration.
>
> The implementation is simple enough, just attach to each symbol 
> an array of (identifier,expression) pairs.
>
> You could also omit the expression, and just have:
>
>   @attr(bar) int y;

I like it. Perhaps

     @attr(bar)

could be equivalent to

     @attr(bar = true)

so you don't get any weird failure state for 
__traits(getAttribute?



More information about the Digitalmars-d mailing list