Hello Dicebot,
I get your point. AST macros as they are explained in DIP50 are probably too powerful for a safe-by-default language. Also they could seduce users to implement custom syntax for cases, where D syntax could suffice. However, it's clearly seen from your example in vibe.d that using "decorators" expects users to know how to explicitly "evaluate" them. Otherwise, your "decorated" code could be misused if used "intuitively". Such approach effectively leads to at least two places in code, where you need to know about the logic of an attribute.

I totally agree that modifying decorators could add another way of shooting your foot, but it seems to me that it's benefits are worth it. Besides, decorating a definition with an uninstantiated template would not break current syntax and current UDA logic. Also it could be potentially implemented by lowering, as described in my first message. Also, don't we love C++ for it's infinite number of ways to shoot your foot? =)

Reply via email to