www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.bugs - [Issue 16586] New: Implicit casting of enum with explicit int base

https://issues.dlang.org/show_bug.cgi?id=16586

          Issue ID: 16586
           Summary: Implicit casting of enum with explicit int base type
                    fails
           Product: D
           Version: D2
          Hardware: x86_64
                OS: Windows
            Status: NEW
          Severity: enhancement
          Priority: P1
         Component: dmd
          Assignee: nobody puremagic.com
          Reporter: m.bierlee lostmoment.com

Consider the following code:

enum StringTypeEnumOne : string {
    bla = "bla"
}

enum StringTypeEnumTwo : string {
    bleh = "bleh"
}

enum IntTypeEnumOne : int {
    bla = 1
}

enum IntTypeEnumTwo : int {
    bleh = 2
}

public void main() {
    string[] strings = [StringTypeEnumOne.bla, StringTypeEnumTwo.bleh];
    int[] ints = [IntTypeEnumOne.bla, IntTypeEnumTwo.bleh];
}

When compiled the following compilation error is thrown:
src\app.d(19,16): Error: cannot implicitly convert expression
(cast(IntTypeEnumOne)1) of type IntTypeEnumOne to IntTypeEnumTwo

The string members are implicitly cast just fine, however I also expected the
members of the int enum to be cast implicitly because I explicitly defined the
base type of the enum.

--
Oct 03 2016