This is a very odd behavior I've been seeing for quite a while now with RDMD. 
DMD doesn't recreate this behavior.

Take this module:
module test;

template Foo(T)
{
    pragma(msg, "test");
}

alias Foo!int a;
// alias Foo!double b;

void main()
{    
}

Notice one of the instantiations is commented out. $ is my prompt, > are the 
printed results:

$ rdmd test.d
> test
> test

$ rdmd test.d
> test

The first time I run it, it instantiates (or evaluates) the template twice. The 
second time I run rdmd, with no changes to the module, it only evaluates the 
template once.

Now I comment out the second instantiation in the module and try again:
$ rdmd test.d
> test
> test
> test
> test

$ rdmd test.d
> test
> test

Quite weird.  I'm thinking this could cause some kind of slowdown. Anyone have 
a clue what's going on here?

Reply via email to