www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.bugs - [Issue 8509] New: Appending a string to an enum string results in another enum string

reply d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=8509

           Summary: Appending a string to an enum string results in
                    another enum string
           Product: D
           Version: unspecified
          Platform: All
        OS/Version: All
            Status: NEW
          Severity: normal
          Priority: P2
         Component: DMD
        AssignedTo: nobody puremagic.com
        ReportedBy: jmdavisProg gmx.com



PDT ---
This code

enum E : string { a = "hello" }

void main()
{
    E e = E.a ~ " world";
    E f = E.a ~ 'w';
}

gives this compilation error:

q.d(6): Error: cannot implicitly convert expression ("hellow") of type string
to E

So, the compiler correctly recognizes that the result of appending a character
to an E results in a string rather than an E. However, it should _also_ fail on
appending a string to it. "hello world" is not a valid E, and appending an
arbitrary string to an enum of type string is not generally going to result in
a valid enum value, so the result should be typed as string, not the enum type.

If an operation on an enum type is not _guaranteed_ to result in a valid enum
value, then that operation should be illegal, forcing the programmer to cast
when they're sure that the result is valid and protecting them from invalid
assignments like in the example above.

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Aug 04 2012
next sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=8509




Commits pushed to master at https://github.com/D-Programming-Language/dmd

https://github.com/D-Programming-Language/dmd/commit/d39288edbee92e241c5a086b297f6afe90c3d764
Fixes Issue 8509 - Appending base type to enum should not result in new enum
type.

https://github.com/D-Programming-Language/dmd/commit/22f300eb07f6e64f36a3535bee6c00b224249e35


Issue 8509 - Appending base type to enum should not result in new enum type

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
May 19 2013
prev sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=8509




17:31:26 PDT ---

 Commits pushed to master at https://github.com/D-Programming-Language/dmd
 
 https://github.com/D-Programming-Language/dmd/commit/d39288edbee92e241c5a086b297f6afe90c3d764
 Fixes Issue 8509 - Appending base type to enum should not result in new enum
 type.
 
 https://github.com/D-Programming-Language/dmd/commit/22f300eb07f6e64f36a3535bee6c00b224249e35

 
 Issue 8509 - Appending base type to enum should not result in new enum type
Partially fixed, but this test-case still works: enum En { a = 1 << 1, b = 1 << 2 } En e = En.a | En.b; Here 'e' becomes an invalid enum value -- cast(En)6. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
May 19 2013