Why does RDMD evaluate templates twice?
Andrej Mitrovic
none at none.none
Wed May 18 19:06:32 PDT 2011
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?
More information about the Digitalmars-d-learn
mailing list