I can't help too much with your problem because I tried it and it
works for me (on my dmd 2.061), but the pattern you're doing
there is actually unneeded:
enum Type {
DOT, ID, MODULE, /* etc ....*/
}
would actually work and you can get a string out of it with
std.conv.to:
import std.conv;
Type t = Type.DOT;
string s = to!string(t);
assert(s == "DOT");