On 8/28/07, Stefan Bodewig <[EMAIL PROTECTED]> wrote: > 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?
Yes: callWithMacro: [echo] In inner: baz echo: [echo] In antcall: bar > > 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-) Everything to do with <antcall>, <ant>, <subant> etc is a nightmare, I would rather deprecate the whole lot and replace them with macros (antcall) or with calls to a new jvm (for <subant>). In any case, if local properties are to be inherited, the properties defined in the <property> element of the <ant> task would have to take precedence over the inherited local-properties. Peter > > >> 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] > > --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]