Another use case for __traits(docComment)

Laeeth Isharc laeeth at kaleidic.io
Wed Nov 13 19:30:16 UTC 2019


On Monday, 11 November 2019 at 17:16:20 UTC, Steven Schveighoffer 
wrote:
> On 11/8/19 9:00 AM, Adam D. Ruppe wrote:
>> Writing code to wrap some Phobos functions for a script 
>> language and need documentation to be displayed at runtime...
>> 
>> Would be really nice to just say if(other_docs.length == 0) 
>> return __traits(docComment, item).
>> 
>> A UDA can populate other_docs in some functions, but when 
>> wrapping libraries you can't add that. Having the doc comment 
>> available through reflection means we can reuse these existing 
>> items.
>
> I still am very VERY leery of having anything in comments 
> affect the code in any way.
>
> What about a compromise? Provide access to the docs but ONLY at 
> runtime. That is, you will not know anything about the string 
> at compiletime, just at runtime, and you can make your 
> decisions there.
>
> Should work for your use case.
>
> -Steve

Compiler flag as we do with string imports?  Most projects won't 
use this feature.  If it does end up being used then at least it 
will be clear.  It's difficult to save people from themselves 
completely - and I think there are many more likely ways to end 
up abusing the powerful features of D.

Suppose in scenario 1 you use doc comment traits and in scenario 
2 you have an extra build stage to achieve the same effect; and 
suppose through unfortunate choices the documentation ends up 
affecting the runtime behaviour of the code in non-documentation 
related ways.  Are you better off in scenario 1 or 2?  It's not 
clear, but 1 might be better.

D has goto - people don't habitually abuse it.


More information about the Digitalmars-d mailing list