2009/6/26 Robert Rohde rarohde@gmail.com:
My understanding has been that the PREprocessor expands all branches, by looking up and substituting transcluded templates and similar things, but that the actual processor only evaluates the branches that it needs. That's a lot faster than actually evaluating all branches (which is how things originally worked), but not quite as effective as if the dead branches were ignored entirely.
(I could be totally wrong however.)
You're right that dead code never reaches the parser (your "processor"), but ideally the preprocessor wouldn't bother expanding it either. I have vague recollection that it was fixed with the new preprocessor, as Simetrical said, but I have no idea how much truth there is in that.
Roan Kattouw (Catrope)