RFC: DIP draft for "Compiler-defined Attribute Consistency"

vit vit at vit.vit
Fri Jul 16 10:17:39 UTC 2021


On Friday, 16 July 2021 at 09:06:26 UTC, Alexandru Ermicioi wrote:
> On Wednesday, 14 July 2021 at 15:01:05 UTC, Rune Morling wrote:
>> Hi All,
>> ...
>> Comments very welcome.
>
> What about making those attributes not just prefixed with @, 
> but fully fledged UDA?
> From the point of view of compile time code this would remove 
> the necessity in strange syntax for is expression to get them. 
> You'd just fetch them as any other uda.
> Also this will allow us to extend these attributes with fields!
> Say for example: @safe(disabled.yes)
> Older compiler would just ignore this, but newer could take 
> hints and other additional info defined on these udas for 
> better optimization, or improved checks, or just for 
> informational purposes.
> Another example: @deprecated("See xxx for this functionality")
>
> Best regards,
> Alexandru.

And make attributes symbols:

```
template Pure(bool con){
	import std.meta : AliasSeq;

	static if(con)
		alias Pure = pure;     //this is not valid
	else
		alias Pure = AliasSeq!();	
}

//conditional atributes:

void foo()@(Pure!true){   //expand to `pure`

}

void bar()@(Pure!false){   //expand to `()`

}

```


More information about the Digitalmars-d mailing list