DMD compiler choking? [Woohoo!]

Chris Nicholson-Sauls ibisbasenji at gmail.com
Fri Apr 7 08:46:54 PDT 2006


Hasan Aljudy wrote:
> James Dunne wrote:
> 
>> Sean Kelly wrote:
>>
>>> Regan Heath wrote:
>>>
>>>> On Thu, 6 Apr 2006 06:10:30 +0000 (UTC), Jeremy Gibson <jtgibson 
>>>> telus net Jeremy_member at pathlink.com> wrote:
>>>>
>>>>> Found the problem, and it was completely irrelevant to everything 
>>>>> -- I had all
>>>>> of the environment variables set up correctly right from the very 
>>>>> beginning.
>>>>>
>>>>> The problem?  The object.d file in my project folder was overriding 
>>>>> object.d in
>>>>> the Phobos directory.  I renamed it to "gameobject.d" and 
>>>>> everything works
>>>>> peachy-keen now.
>>>>>
>>>>> (I noticed this because after I uncommented some code in object.d, 
>>>>> I started
>>>>> getting some errors in that file while I tried to compile the file 
>>>>> test.d (which
>>>>> I posted) in the same folder.  test.d does not import object.d at 
>>>>> all, so
>>>>> something had to be automatically importing it.  That's when it 
>>>>> clicked.)
>>>>>
>>>>> This kind of name clash should probably be documented... =)
>>>>
>>>>
>>>>
>>>>
>>>> Ahh, of course. Yeah, at least one other person has had this exact 
>>>> same problem.
>>>>
>>>> At the very least it should be documented. The compiler could error 
>>>> on compiling object.d, and/or refuse to create an object.o and/or 
>>>> refuse to link/see any object.o which is not in the main directory.
>>>
>>>
>>>
>>>
>>> For what it's worth, I've run into this with Ares before.  DMD 
>>> requires certain class definitions to be in object.d.  If it needs 
>>> them and they aren't there, the compiler crashes.  But this should be 
>>> reported, as the correct behavior would be to terminate with a 
>>> helpful message.
>>>
>>>
>>> Sean
>>
>>
>>
>> DMD's phobos should rename the object module class to something 
>> inconspicuous like '_d_object' or something to avoid naming conflicts 
>> with new programmers. :) (I just thought naming conflicts with new 
>> programmers was kinda funny)
>>
> 
> I think it should just go into std package, making it std.object
> This way it'll be very hard to make the above mentioned mistake without 
> knowing what's going on.

I'm all for this solution, for two reasons.  Reason 1, I've personally had a project where 
I had a class whose most obvious natural name would be Object.  Of course, I ended up 
calling it LObject, and renaming all its compliments with the L* prefix as well, for 
consistancy.  It would've been nice not to have to.  Reason 2, it solves the problem of 
what to do if I actually want to explicitly refer to the generic Object: just call it 
std.object.Object (perhaps with an alias of _D_Object?)

-- Chris Nicholson-Sauls



More information about the Digitalmars-d-learn mailing list