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]

Reply via email to