I've confirmed that both forward referenced and recursed Velocimacros cause
error messages in 1.3-rc1 and 1.3.1-rc2 (I assume the intervening versions are
affected as well). I have not (yet) tested 1.4-dev.
The error message currently spouted by
org.apache.velocity.runtime.directive.VelocimacroProxy does not differentiate
between forward referencing and recursion (it is a very similar problem), and is
not representitive of the problem. It goes as follows:
2002-10-14 16:03:49,562 - VM #linkIf: error : too few arguments to macro.
Wanted 3 got 0
This issue can be reproduced through either of the following setups:
a) Use the #linkIf macro in your VM_global_library.vm, then define it later on
in the file.
b) Define a #linkIf macro which calls itself recursively.
The expected behavior is that Velocity will either provide a more accurate
description of what it wants from the user, or allow forward referencing and
recursion without error messages. If not already in use, perhaps a multi-pass
approach to dealing with Velocimacro libraries should be put in place to