On Mon, 27 Aug 2007, Peter Reilly <[EMAIL PROTECTED]> wrote: > On 8/27/07, Stefan Bodewig <[EMAIL PROTECTED]> wrote:
>> How does nesting of locals work? If a macro calls another macro, >> are the properties set in the outer macro available to the inner? >> What about <ant> subbuilds invoked from inside a macro? > > Nesting works for calling other macros (otherwise ant-contrib for > would not work too good!). OK. > But not for calling ant subbuilds invoked from inside a macro. > The reasoning here is that 1) the code is awful (and thus hard to > maintain) and 2) it is not necessary as one can use nested > <property> tags on the <ant> task and 3) it may be confusing (where > do these fit with nested property, user and non-user properties). 2) implies that I'm aware there is a local property around. I know I am probably constructing something unlikely to happen, but I'm trying to understand what would happen before I dive into the code. Given <target name="echo"> <echo>In antcall: ${foo}</echo> </target> <macrodef name="inner"> <sequential> <echo>In inner: ${foo}</echo> <antcall target="echo"/> </sequential> </macrodef> <macrodef name="outer"> <sequential> <make a local property "foo" and set it to "baz"/> <inner/> </sequential> </macrodef> <target name="callWithMacro"> <property name="foo" value="bar"/> <outer/> </target> would result in In inner: baz In antcall: bar Correct? By just looking at inner and not at the path it gets called you can't know that a local property exists. I don't say this is a big problem, but I can see how it is going to confuse people. At least we need to document it properly - or find a non-awful way to make it work 8-) >> I think there are two options: restricting it to sequential or >> allowing it for any TaskContainer. > > This is hard as the TaskContainer user implementation controls when > the sequence of UEs are to be invoked (or reinvoked) and there is no > hook back to ant core as to when this happens. OK, so I really need to read the code before I comment any further. Stefan --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]