I was looking at dmd source code and found an undocumented behavior:
@a=>7 int b;
pragma(msg, __traits(getAttributes, b)); // AliasSeq!((a) => 7)
D grammar allows lambda in UDA only inside parenthesis:
@(a=>7) int b;
pragma(msg, __traits(getAttributes, b)); // AliasSeq!((a) => 7)
So is this a bug in compiler or in grammar documentation?