On 04/30/2012 07:03 AM, Jonathan M Davis wrote:
On Sunday, April 29, 2012 21:56:08 H. S. Teoh wrote:
I wonder if dmd (or rdmd) should have a mode where it *only* compiles
unittest code (i.e., no main() -- the resulting exe just runs unittests
and nothing else).
It wouldn't make sense. It's nowhere near as bad as C++, but dmd has to
recompile modules all the time unless you compile the entire program at once.
When you run a build, every single module on the command line and all of the
imported modules get compiled.
Only the symbols that need to be analysed actually get analysed (eg.
CTFE, instantiated templates.) The other symbols are merely parsed, and
parsing is quite cheap.
Object code is generated only for those on the
command line, but the others are still compiled.
I think 'compiled' would imply that some output code is generated.
Any imported module which
uses a .di file won't have as much to compile,
There is no difference between .d files and .di files except that the
compiler prefers the .di file for imports.
and any templated code that
doesn't get used in those modules won't get compiled, but there's still lots
of recompilation going on if you compile your program incrementally.
It depends on how much CTFE is performed on the module interface level.
And D
DMD.
just isn't set up to compile only a portion of a module.
- Jonathan M Davis
If that is necessary then the module is too big.