stringof giving a surprising output
Jonathan M Davis
jmdavisProg at gmx.com
Tue May 15 01:16:49 PDT 2012
On Tuesday, May 15, 2012 10:39:21 Manu wrote:
> Nobody?
> Is this intentional, or a bug? Some way that this makes sense that I don't
> understand?
> Does Colour somehow transfer its scope to the default arg? That string
> doesn't seem to compile...
>
> On 14 May 2012 15:52, Manu <turkeyman at gmail.com> wrote:
> > void function(Colour c = Colour.white) f;
> >
> > f.stringof == "void function(Colour c = white)"
> >
> > Error: undefined identifier 'white'
> >
> >
> > This is rather hard to work-around. It'll take a lot of time to write code
> > to magically put 'Colour.' back there...
> > Is there another way?
I suspect that stringof was never intended for anything but informative
output, and in this case, for whatever reason, it doesn't bother to put the
enum's name on the enum value. And if it was just intended for informative
output, then it's not necessarily tested for compilability (hence the fact
that the enum's name is missing in the default argument is permitted).
Given that it _does_ make sense to use stringof for string mixins, I'd create
a bug report on it, since it won't compile the way that it is.
- Jonathan M Davis
More information about the Digitalmars-d
mailing list