digitalmars.D.bugs - [Issue 4261] New: Bad textual printing of enums
- d-bugmail puremagic.com (28/28) Jun 02 2010 http://d.puremagic.com/issues/show_bug.cgi?id=4261
- d-bugmail puremagic.com (23/23) Aug 29 2010 http://d.puremagic.com/issues/show_bug.cgi?id=4261
- d-bugmail puremagic.com (8/8) Aug 30 2010 http://d.puremagic.com/issues/show_bug.cgi?id=4261
- d-bugmail puremagic.com (27/27) Aug 30 2010 http://d.puremagic.com/issues/show_bug.cgi?id=4261
- d-bugmail puremagic.com (12/12) Aug 31 2010 http://d.puremagic.com/issues/show_bug.cgi?id=4261
- d-bugmail puremagic.com (13/13) Jun 02 2011 http://d.puremagic.com/issues/show_bug.cgi?id=4261
http://d.puremagic.com/issues/show_bug.cgi?id=4261 Summary: Bad textual printing of enums Product: D Version: unspecified Platform: x86 OS/Version: Windows Status: NEW Severity: normal Priority: P2 Component: Phobos AssignedTo: nobody puremagic.com ReportedBy: bearophile_hugs eml.cc This D2 program: import std.stdio: writeln; void main() { enum Foo { Zero, One } Foo f = Foo.One; writeln(f); } With DMD v2.046 prints: 1 But it's better for it to print: One See also bug 3308. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Jun 02 2010
http://d.puremagic.com/issues/show_bug.cgi?id=4261 Andrej Mitrovic <andrej.mitrovich gmail.com> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |andrej.mitrovich gmail.com 21:16:37 PDT --- When you need to get the name of the enumerated value, you have to use the 'to' template function from std.conv, as described in TDPL. Your example then becomes: import std.conv : to; import std.stdio: writeln; void main() { enum Foo { Zero, One } Foo f = Foo.One; writeln(to!string(f)); } Prints: One It wouldn't make much sense for an enum to behave differently in different contexts (e.g. comparing it in an if statement vs. using it with a writeln). -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Aug 29 2010
http://d.puremagic.com/issues/show_bug.cgi?id=4261 Enums aren't numbers, they are symbols that the language/CPU often represents with numbers. See also bug 3999 -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Aug 30 2010
http://d.puremagic.com/issues/show_bug.cgi?id=4261 05:47:34 PDT --- I'm not sure I understand what you're saying. An enum in D is a list of symbolic values of any type (except classes). For example: module enums; import std.stdio; struct Color { ubyte r, g, b; } enum { red = Color(255, 0, 0), green = Color(0, 255, 0), blue = Color(0, 0, 255) } void foo(Color c) { writefln("%s %s %s", c.r, c.g, c.b); } void main() { foo(blue); } enums are also used in CTFE, e.g.: enum float value = someFunc(); // CTFE Having to use a cast everywhere for an enum would break a lot of code. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Aug 30 2010
http://d.puremagic.com/issues/show_bug.cgi?id=4261 What I am saying in bug 3999 is relative to just the case where the enum has a EnumTag. In this case I prefer the enum to be like a typedef (as the C++0x "enum class") and require a cast if you want to use/compare it as/to the base type. In your example red, green and blue are inside an anonymous enum (it lacks a EnumTag), so in this case the cast is not necessary. So that code is not affected. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Aug 31 2010
http://d.puremagic.com/issues/show_bug.cgi?id=4261 kennytm gmail.com changed: What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |RESOLVED CC| |kennytm gmail.com Resolution| |FIXED https://github.com/D-Programming-Language/phobos/commit/cbe0d06965db56599f9b35e7e2a131a99dbd9ed2 -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Jun 02 2011