digitalmars.D.bugs - [Issue 8509] New: Appending a string to an enum string results in another enum string
- d-bugmail puremagic.com (36/36) Aug 04 2012 http://d.puremagic.com/issues/show_bug.cgi?id=8509
- d-bugmail puremagic.com (12/12) May 19 2013 http://d.puremagic.com/issues/show_bug.cgi?id=8509
- d-bugmail puremagic.com (10/20) May 19 2013 http://d.puremagic.com/issues/show_bug.cgi?id=8509
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 --- Comment #0 from Jonathan M Davis <jmdavisProg gmx.com> 2012-08-04 16:05:27 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
http://d.puremagic.com/issues/show_bug.cgi?id=8509 --- Comment #1 from github-bugzilla puremagic.com 2013-05-19 15:46:02 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 Merge pull request #1240 from AndrejMitrovic/Fix8509 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
http://d.puremagic.com/issues/show_bug.cgi?id=8509 --- Comment #2 from Andrej Mitrovic <andrej.mitrovich gmail.com> 2013-05-19 17:31:26 PDT --- (In reply to comment #1)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 Merge pull request #1240 from AndrejMitrovic/Fix8509 Issue 8509 - Appending base type to enum should not result in new enum typePartially 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