On Monday 17 November 2003 15:57, Stefan Bodewig wrote: > On Fri, 14 Nov 2003, peter reilly <[EMAIL PROTECTED]> wrote: > > > An example: > > <target name="s"> > > <macrodef name="show"> > > <element name="x"/> > > <sequential> > > <property name="inmacro" value="Set in macro"/> > > <x/> > > </sequential> > > </macrodef> > > > > <show> > > <x> > > <echo>inmacro is '${inmacro}'</echo> > > </x> > > </show> > > </target> > > This shows: > > > > s: > > inmacro is 'Set in macro' > > > > It would be very difficult to stop this. > > So we must ask outselves whether this is good or bad for us. > > If the property inmacro has been defined before the macro invocation, > the task inside the macro will be a noop - the user gets the expected > behavior. > > If it has not been set, well, this might come unexpected.
I suppose it depends on how one sees macrodef. Treated as a simple macro substition: <macrodef name="show"> <element name="x"/> <sequential> <property name="inmacro" value="Set in macro"/> <x/> </sequential> </macrodef> <target name="s"> <show> <x> <echo>inmacro is '${inmacro}'</echo> </x> </show> </target> the target "s" would become: <target name="s"> <sequential> <property name="inmacro" value="Set in macro"/> <echo>inmacro is '${inmacro}'</echo> </sequential> </target> And the above will behave the same as the macrodef version. > > But there will never be any double expansion, right? I mean, > > <echo>inmacro is '$${inmacro}'</echo> > > would always result in > > > s: > > inmacro is '${inmacro}' Yes with the current implementation (not with some of my intermediate implementations...) Peter --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]