Syntax for Static Import of User Define Attributes
Dennis
dkorpel at gmail.com
Fri Jul 28 13:45:13 UTC 2023
On Friday, 28 July 2023 at 12:20:05 UTC, Steven Schveighoffer
wrote:
> On 7/28/23 8:10 AM, Vijay Nayar wrote:
> It might be possible to expand the grammar. It seems very
> specific to UDAs, as it doesn't just throw out `Expression` or
> whatnot. It probably has to do with the spot that it's in
> (declaration).
Yes, parsing arbitrary expressions after an `@` would result in
this:
```D
void f(int x) @att in (x > 0) { }
```
Being parsed as:
```D
void f(int x) @(att in (x > 0)) { }
```
And things like `@3 + 3` don't look like they would be parsed as
`@(3 + 3)`, it looks like `(@3) + 3`.
So the syntax as `@(expression)` to make it clear where the
expression ends. Then there's `@identifier` and
`@identifier(args)` as shorthand for common cases that do look
clear. I recently added `@TemplateSingleArgument` so you can do
`@"abc"` or `@3` as well. Perhaps the syntax can be expanded to
allow `@a.b.c(d)` as well, as well as `@a.b.c!d`, though there's
a risk of the rules getting convoluted.
More information about the Digitalmars-d-learn
mailing list