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

Jonathan M Davis jmdavisProg at gmx.com
Fri Jun 14 19:39:16 PDT 2013


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


More information about the Digitalmars-d-learn mailing list