Strange type redifinition error

torhu no at spam.invalid
Wed Oct 8 12:43:24 PDT 2008


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;



More information about the Digitalmars-d mailing list