www.digitalmars.com         C & C++   DMDScript  

digitalmars.D - Custom Attributes for Function Parameters?

reply Jerry <hurricane hereiam.com> writes:
Is there any reason why custom attributes aren't allowed for 
function parameters? It'd be useful for my situation to give the 
parameter some more information. Seems it is allowed in some 
other languages that have attributes, so was just wondering.
Sep 23
parent reply Jonathan Marler <johnnymarler gmail.com> writes:
On Saturday, 23 September 2017 at 23:13:33 UTC, Jerry wrote:
 Is there any reason why custom attributes aren't allowed for 
 function parameters? It'd be useful for my situation to give 
 the parameter some more information. Seems it is allowed in 
 some other languages that have attributes, so was just 
 wondering.
Can you share your use case for them? I'm curious how they could be useful.
Sep 23
parent Jerry <hurricane hereiam.com> writes:
On Sunday, 24 September 2017 at 02:06:50 UTC, Jonathan Marler 
wrote:
 On Saturday, 23 September 2017 at 23:13:33 UTC, Jerry wrote:
 Is there any reason why custom attributes aren't allowed for 
 function parameters? It'd be useful for my situation to give 
 the parameter some more information. Seems it is allowed in 
 some other languages that have attributes, so was just 
 wondering.
Can you share your use case for them? I'm curious how they could be useful.
Well for me it's for functions I'm using in my scripting language. Internally a lot of objects are simply represented as indices into an array. For the scripting language though they have their own type defined for them. So it'd be convenient to be able to add that information into the function signature along with the index. void functionForScript( (ScriptType.name) MyIndexType nameIndex, (ScriptType.object) MyIndexType objectIndex) { } There are other ways to do it but they aren't as convenient. If I just made it an attribute for the function, and manually declared all the types. I'd have to maintain that when most of the other types don't need extra data and can be determined just by the type. As well for other uses right now you can't pass a function or delegate that is nogc through to a function, without first making it an alias. It's annoying if it's just one function that needs it, now you need to give it a name somewhere else for a one off. I'm sure there's other uses as well. C++ has maybe_unused attribute, though that doesn't really apply to D as it doesn't really have any warning messages at all. Being able to put in that extra information for use is nice, just like it is nice to be able to attach them to structs and classes. Which is why I was wondering why it wasn't included, even for special attributes like nogc.
Sep 23