It seems that during function partial ordering the compiler thinks that an int-based enum is implicitly convertible to char: --------- module a; void foo(char) { } --------- module b; enum MyEnum : int { _ } void foo(MyEnum) { } --------- module main; import a; import b; void main() { foo(char.init); foo(MyEnum.init); // [1] } // 1) Error: b.foo at b.d(5) conflicts with a.foo at a.d(3)
MyEnum.init _is_ convertible to char, because it is known at compile time, and range propagation allow the conversion.
THIS ISSUE HAS BEEN MOVED TO GITHUB https://github.com/dlang/dmd/issues/17592 DO NOT COMMENT HERE ANYMORE, NOBODY WILL SEE IT, THIS ISSUE HAS BEEN MOVED TO GITHUB