D1: Overloading across modules
Ellery Newcomer
ellery-newcomer at utulsa.edu
Tue Mar 23 07:15:46 PDT 2010
On 03/23/2010 05:42 AM, Daniel Keep wrote:
>
>
> Nick Sabalausky wrote:
>> In D1, is there any reason I should be getting an error on this?:
>>
>> // module A:
>> enum FooA { fooA };
>> void bar(FooA x) {}
>>
>> // module B:
>> import A;
>> enum FooB { fooB };
>
> alias A.bar bar;
>
>> void bar(FooB x) {}
>>
>> bar(FooB.fooB); // Error: A.bar conflicts with B.bar
>>
>> Is overloading across modules not allowed? Is overloading on two different
>> enum types not allowed? Is it a DMD bug? Or does this all work fine and I
>> probably just have some other problem elsewhere?
>
> The compiler assumes that, unless you specifically tell it otherwise,
> symbols pulled in from another module conflict with local ones.
>
> This might also work: import A : bar;
What about
// module A:
enum FooA{ fooA };
void bar(FooA x){}
// module B:
import A;
mixin(`
enum FooB{ fooB };
void bar(FooB x){}
`);
bar(FooB.fooB);
It doesn't seem to work the same as when enum FooB et al are normal
code. It's been giving me grief lately.
More information about the Digitalmars-d-learn
mailing list