www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.bugs - [Issue 17542] New: DSON conversion of enums misses enum name

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

          Issue ID: 17542
           Summary: DSON conversion of enums misses enum name
           Product: D
           Version: D2
          Hardware: All
                OS: All
            Status: NEW
          Severity: enhancement
          Priority: P1
         Component: phobos
          Assignee: nobody puremagic.com
          Reporter: dlang-bugzilla thecybershadow.net

This almost works:

///////////// test.d ////////////
import std.conv : text;
enum E { a }
struct S { E e; }
immutable S s1 = S.init;
immutable S s2 = mixin(text(s1));
/////////////////////////////////

It doesn't work because for the enum member a, std.format emits just "a"
instead of "E.a".

std.format is already capable of converting the same type to string in
different ways, e.g. format("%s", "hello") and format("%(%s%)", ["hello"]) will
have the string converted differently (in the second case, with quotes and
escapes).

So, it would be nice that for similar circumstances, stringified enums had
their name included in the same way that stringified structs have their name
included.

Incidentally, I found an interesting use case for DSON: parsing or generating a
complicated data structure, dumping it to a .d file, then loading the .d file
by using a mixin+import expression, for cases when generating said data
directly at compile time would be too slow or otherwise impractical.

--
Jun 23