Thread overview | |||||
---|---|---|---|---|---|
|
June 14, 2013 Clash between functions that shouldn't be in the same partial ordering set | ||||
---|---|---|---|---|
| ||||
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. |
June 15, 2013 Re: Clash between functions that shouldn't be in the same partial ordering set | ||||
---|---|---|---|---|
| ||||
Posted in reply to TommiT | 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
|
June 15, 2013 Re: Clash between functions that shouldn't be in the same partial ordering set | ||||
---|---|---|---|---|
| ||||
Posted in reply to Jonathan M Davis | 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 |
Copyright © 1999-2021 by the D Language Foundation