Strange type redifinition error

Denis Koroskin 2korden at gmail.com
Wed Oct 8 13:17:44 PDT 2008


Thanks to you all for your help!

On Wed, 08 Oct 2008 23:43:24 +0400, torhu <no at spam.invalid> wrote:

> Benji Smith wrote:
>> Denis Koroskin wrote:
>>> I am getting the following error message on one of my source files  
>>> (D2.019):
>>>  Path.d(56): Error: Types.BOOL at Types.d(5) conflicts with  
>>> win32.windef.BOOL at win32\windef.d(60)
>>>  win32\windef.d(60) looks like this:
>>> alias int     WINBOOL, BOOL, INT, LONG, HFILE, HRESULT;
>>>  Types.d(5) looks like this:
>>> import win32.windef : BOOL;
>>>  Path.d includes lots of files that include both Types.d and  
>>> win32\windef.d through a long inclusion chain.
>>>  Why does "import win32.windef : BOOL;" defines new type?
>>> It is a bug, I guess. Removing ": BOOL;" solves the problem. Shall I  
>>> put it into bugzilla?
>>  This sounds spookily familiar to a bug I logged last month. But I was  
>> using Tango, and it sounds like you're using Phobos. Here's my bug  
>> report:
>>  http://www.dsource.org/projects/tango/ticket/1249
>>  This could be one of those cases where the same bits of code were  
>> copied and pasted into both Phobos and Tango, resulting in duplicate  
>> bugs. If you do post a bugzilla report, maybe add a link to the Tango  
>> bug. It might help.
>
> I think it's a different issue.  Selective imports work the same way as  
> aliases.  So in a way, BOOL is defined twice.  If this is by design or  
> accident, I don't know.
>
> import win32.windef : BOOL;
>
> is the same as:
>
> import win32.windef;
> alias win32.windef.BOOL BOOL;

Yes, but that doesn't create new type so no conflicts should be here.

I filled the report: http://d.puremagic.com/issues/show_bug.cgi?id=2401



More information about the Digitalmars-d mailing list