Format of .stringof, defined or not defined?

Kapps opantm2+spam at gmail.com
Fri Sep 13 00:52:05 PDT 2013


On Friday, 13 September 2013 at 07:06:27 UTC, Jacob Carlborg 
wrote:
> I just hit a problem in my serialization library, Orange, being 
> integrated as std.serialization. The format of .stringof 
> changed in git HEAD. Now, the question is should the format of 
> .stringof be defined and reliable or not defined at all? Either 
> way, this should be clearly stated in the documentation, which 
> it's currently not.
>
> Below is what's changed. It's managed to stay unchanged for the 
> last 6-7 years.
>
> Before the change:
>
> struct Foo
> {
>     int a;
> }
>
> static assert(Foo.tupleof[0].stringof == "(Foo).a");
>
> After the change:
>
> static assert(Foo.tupleof[0].stringof == "a");

Aye, I had my own code break from this change as well (though it 
was a very easy fix in my case). I really prefer the new format 
however. Including the type made reading people's code very 
confusing with the random T.tupleof[T.stringof + 3 .. $] if you 
didn't understand the exact format. That being said, this is 
something that's commonly enough used that it should be defined 
whether or not the format could be relied upon.


More information about the Digitalmars-d mailing list