Clash between functions that shouldn't be in the same partial ordering set

TommiT tommitissari at hotmail.com
Fri Jun 14 22:39:02 PDT 2013


On Saturday, 15 June 2013 at 02:39:31 UTC, Jonathan M Davis wrote:
> On Saturday, June 15, 2013 01:09:28 TommiT wrote:
>> I'm pretty sure the following is a compiler bug, right? (using
>> DMD 2.063)
>> 
>> ---------
>> 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)
>> 
>> There shouldn't be a problem with this cross-module 
>> overloading,
>> because MyEnum isn't implicitly convertible to char and vice
>> versa, and thus the partial ordering of functions should 
>> consider
>> a.foo and b.foo unordered.
>
> It certainly looks like a bug to me.
>
> - Jonathan M Davis

Bug report there:
http://d.puremagic.com/issues/show_bug.cgi?id=10361


More information about the Digitalmars-d-learn mailing list