* Eric Blake wrote on Fri, Aug 27, 2010 at 03:59:00PM CEST:
> On 08/26/2010 11:24 PM, Ralf Wildenhues wrote:
> >Is
> >   m4_pushdef([M]) m4_define([M]) m4_popdef([M])
> >
> >documented to work and do the expected (what would that be?) thing?
> 
> Yes - [...]

> (Some other m4 implementations are
> documented where m4_define wipes out the entire pushdef stack,
> rather than the top-most definition on the stack, and POSIX allows
> that alternate semantic, but it would break m4sugar.)

Ah, that bit of semantics had evaded me so far.

> On
> the other hand, AC_COMPILE_IFELSE(AC_LANG_DEFINES_PROVIDED) (note
> the missing quoting) expands to:
> 
> m4_define([a],[nowarn])m4_pushdef([a],[warn])a()m4_popdef([a])
> 
> and still issues a warning, because the AC_LANG_DEFINES_PROVIDED was
> expanded too early, and the expansion of a is still tied to the
> [warn] from the pushdef.

Yup, seeing that in a couple of cases in Libtool, which I'm going to fix
next.

Thanks,
Ralf

Reply via email to