How/where to hack DMD to generate docs for string mixed members.

Jonathan M Davis newsgroup.d at jmdavisprog.com
Mon Apr 16 16:28:57 UTC 2018


On Monday, April 16, 2018 16:05:40 9il via Digitalmars-d-learn wrote:
> On Sunday, 15 April 2018 at 08:17:21 UTC, Jonathan M Davis wrote:
> > On Sunday, April 15, 2018 07:59:17 Stefan Koch via
> >
> > Digitalmars-d-learn wrote:
> >> On Sunday, 15 April 2018 at 05:20:31 UTC, 9il wrote:
> >> > Hey,
> >> >
> >> > How/where to hack DMD to generate docs for string mixed
> >> > members?
> >> >
> >> > struct S
> >> > {
> >> >
> >> >     mixin("
> >> >
> >> >      ///
> >> >      auto bar() {}
> >> >
> >> >     ");
> >> >
> >> > }
> >> >
> >> > Best regards,
> >> > Ilya Yaroshenko
> >>
> >> hmm you should be able to see docs for string mixins, if not.
> >> try using -vcg-ast and try to run ddoc on the cg file
> >
> > AFAIK, it's never worked to see any ddoc from string mixins.
> > Certainly, I'm quite sure that it didn't used to work, so if it
> > does now, something changed within the last couple of years.
> >
> > The closest that I'm aware of is that putting /// on a template
> > mixin works so that you can do something like
> >
> > class MyException : Exception
> > {
> >
> >     ///
> >     mixin basicExceptionCtors;
> >
> > }
> >
> > and have the ddoc within the template mixin show up.
> >
> > - Jonathan M Davis
>
> Mixin templates works. The problem is the use case for the
> library (you know it) I am working on is looks like:
>
> ------
>
> struct S
> {
>      mixin(WithGetters!("private", // or WithGettersAndConstructor
>          Date, "startDate",
>       Date, "endDate",
>       DayCount, "dayCount",
>       double, "yearFraction",
>       double, "spread",
>       Calculation, "calculation",
>      ));
> }
>
> ------
>
> It should define members and getters and maybe one or more
> constructors.
> So mixin strings will be here anyway either in the struct or in a
> mixin template.

Well, the fact that the compiler doesn't display any ddoc from string mixins
is one of those annoying things that has come up from time to time for years
now. I don't know what the consequences of changing that behavior would be,
but on the surface at least, it seems like it would be a positive change.
Regardless, someone would have to make the change to the compiler, and
AFAIK, that particular improvement has never been a priority for anyone, but
I don't pay much attention to dmd PRs. A quick search turns up this bug
report:

https://issues.dlang.org/show_bug.cgi?id=2420

And it looks like that one links to this fixed bug

https://issues.dlang.org/show_bug.cgi?id=648

which looks like it was when it became possible to at least mark a template
mixin with /// to make its ddoc show up.

- Jonathan M Davis



More information about the Digitalmars-d-learn mailing list