Syntax for Static Import of User Define Attributes
Vijay Nayar
madric at gmail.com
Thu Jul 27 21:19:08 UTC 2023
What is the correct syntax to use a static import of a
user-defined-attribute?
Context: Attributes can have names that conflict with local
variables. It is desired to use the fully-qualified-name of the
attribute to get around this.
Example:
```
import vibe.data.serialization : name, optional;
class ChatCompletionFunctions {
@name("name") // Error: "name" refers to the string, not the
attribute @name.
string name;
@name("max-tokens")
int maxTokens;
}
```
Attempted Fix 1: static imports
```
static import vibe.data.serialization;
class ChatCompletionFunctions {
@vibe.data.serialization.name("name")
...
}
```
This produces the error, it seems to be because the `@` symbol
stops capturing the annotation name at the first dot it
encounters.
```
source/openai/model/ChatCompletionFunctions.d(19,32): Error:
unexpected `(` in declarator
```
Attempted Fix 2: Enclose the entire attribute name in parenthesis.
```
static import vibe.data.serialization;
class ChatCompletionFunctions {
@(vibe.data.serialization.name)("name")
...
}
```
This simply gives:
```
source/openai/model/ChatCompletionFunctions.d(19,34): Error:
declaration expected, not `(`
```
Is static importing of UDAs even supported in the language?
More information about the Digitalmars-d-learn
mailing list