[Issue 17542] New: DSON conversion of enums misses enum name
via Digitalmars-d-bugs
digitalmars-d-bugs at puremagic.com
Fri Jun 23 08:00:48 PDT 2017
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 at puremagic.com
Reporter: dlang-bugzilla at 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.
--
More information about the Digitalmars-d-bugs
mailing list