ant-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From peter reilly <peter.rei...@corvil.com>
Subject Re: Vote: <local> for 1.6
Date Thu, 23 Oct 2003 13:35:02 GMT
On Thursday 23 October 2003 14:09, Stefan Bodewig wrote:
> On Thu, 23 Oct 2003, peter reilly <peter.reilly@corvil.com> wrote:
> > The following does the same ......
> >
> >   <target name="i-have-won-over-gump">
> >     <antcall target="j">
> >       <param name="build.sysclasspath" value="ignore"/>
> >     </antcall>
> >   </target>
>
> It doesn't - if build.sysclasspath is a user property of course.  Try
> it with ant -Dbuild.sysclasspath=only and you'll see.

Opps..
You are right.

In this case, dynamic extent for local/attributes does not make
sense if attributes allow shadowing of user properties.

<target name="i-have-won-over-gump">
   <macrodef name="shadow">
       <attribute name="build.sysclasspath" default="ignore"/>
       <attribute name="target"/>
       <sequential>
           <antcall target="${target}"/>
       </sequential>
   </macrodef>
   <shadow target="j"/>
</target>

> At least Emacs Lisp uses dynamic extent here,  i.e. with
>
> (setq here bar)
> (let ((here foo))
>   (some-method))
>
> the function some-method would see the value foo for 'here.

Oh, yes that must be true from a lisp point of view.

> I'm not familiar enough with other Lisp dialects.  So if you want to
> draw this parallel, <ant> would have to inherit the local shadows.
> And <macrodef> would see the same problems (defmacro) has and we'd
> have to introduce "uninterned symbols" to solve some issues,
> (i.e. properties that are no properties at all).  In a sense,
> <macrodef>'s current attributes are such uninterned symbols.

Yikes, that sounds complicated.

> > This is done to support the following:
> > <local name="x"/>
> > <parallel>
> >    <sequential>
> >        <property name="x" value="1"/>
> >        <echo>x is ${x}</echo>
> >    </sequential>
> >    <sequential>
> >        <property name="x" value="2"/>
> >        <echo>x is ${x}</echo>
> >    </sequential>
> >    <sequential>
> >        <property name="x" value="3"/>
> >        <echo>x is ${x}</echo>
> >    </sequential>
> > </parallel>
> Feels wrong.  Each sequential should be/contain a <local> IMHO.  If
> you want to have different local scopes withon the <sequential>s then
> you have to create them.

Ok, that makes sense, implementation may however be difficult.

Peter


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@ant.apache.org
For additional commands, e-mail: dev-help@ant.apache.org


Mime
View raw message