Instances of an enum of type string can't be passed into a switch or final switch: ---- enum Test : string { Foo = "Foo", } Test a = Test.Foo; switch(a) { case Test.Foo: break; } ---- even though a string is a valid type to pass into a (final) switch. Compiler error: Error: 'a' must be of integral or string type, it is a Test but obviously the underlying type of 'a' is string.
Sorry; I forgot to include compiler info. > dmd --version DMD v2.063 DEBUG
https://github.com/D-Programming-Language/dmd/pull/2080
Commits pushed to master at https://github.com/D-Programming-Language/dmd https://github.com/D-Programming-Language/dmd/commit/abdccd46f3820f44b37b754dc15beed99fda4b96 fix issue 10113 - Can't use an enum : string in a switch statement https://github.com/D-Programming-Language/dmd/commit/9b6fa5682c50d2b9674c1e5cb97672a4f7daa35b Merge pull request #2080 from hpohl/10113 fix issue 10113 - Can't use an enum : string in a switch statement
*** Issue 2950 has been marked as a duplicate of this issue. ***
Even though the pull didn't test this, the -g switch seems to work too. (in my pull this didn't work). It may be a good idea to add -g in the PERMUTE_ARGS section though, to avoid regressions.
(In reply to comment #2) > https://github.com/D-Programming-Language/dmd/pull/2080 Thanks, Henning. Keep up the good work!