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