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]

Reply via email to