Am 13.10.2010 21:45, schrieb dsimcha:
I've noticed that, when passed multiple files at once, DMD is generally buggy
in ways that I can't reproduce in small test cases.  This includes things like
magically ignoring __gshared variables, and not being able to convert a type
to an alias to the same type, for example, not being able to convert a size_t
to a uint on 32-bit, or not being able to convert a float[] to an R where R is
a template parameter instantiated as float[].

I have two questions:

1.  Has anyone experienced similar things and if so are they further along
than me at creating decent test cases?

2.  I'm used to using Code::Blocks, but want to switch to Visual D because it
seems to work a lot better for the most part.  However, by default it seems to
pass all project files to the compiler at once, where Code::Blocks compiles
one file at a time.  This means I have to deal with DMD's bugginess when
passed mutliple files at once.  Does anyone know how to make Visual D work
Code::Blocks style, i.e. compile each file to an object file and link them
afterwords?

Right now, I'm in exactly the same situation. However, the problems might be a bit more obvious: Sometimes symbols are missing at link time that should not and sometimes some symbols (most of the time phobos symbols) are defined twice but with exactly the same module path.

(Error: multiple definition of conv_208_199f: _D53C:\D\dmd2\windows\bin\..\..\src\phobos\std\conv.d.52012__ModuleInfoZ and conv: _D53C:\D\dmd2\windows\bin\..\..\src\phobos\std\conv.d.52012__ModuleInfoZ)

On Mac OS, using all-at-once compilation I get defective .lib files (the ar tool complains that the .o file is smaller than it reports or something similar) so I have to compile the code of all static libs together with the application code.

The problem is that it is really difficult (almost impossible) to isolate the problem in any way because sometimes appears erratically and the code base is quite large. And also I cannot share the source code for debugging.

Reply via email to