2007-10-19 Eric Blake <ebb9@byu.net>
+ Document m4_expand limitation.
+ * lib/m4sugar/m4sugar.m4 (m4_expand): Mention problem with
+ unbalanced parse.
+ * doc/autoconf.texi (Pretty Help Strings, Evaluation Macros)
+ (Writing Testsuites): Mention limitations inherited from
+ m4_expand.
+
Improve AT_BANNER handling.
* lib/autotest/general.m4 (BANNERS): New named diversion.
(TESTS_END): Diversion no longer used.
whitespace is discarded only if it results from unquoted commas in the
expansion of macros contained in @var{arg}.
+Note that @code{m4_expand} cannot parse everything. The expansion of
+@var{arg} must not contain unbalanced quotes (although quadrigraphs can
+get around this), nor unbalanced parenthesis (portable shell @code{case}
+statements are a major culprit here, but creative shell comments can get
+around this).
+
@example
m4_define([active], [ACT, IVE])dnl
m4_define([active2], [[ACT, IVE]])dnl
The @code{AS_HELP_STRING} macro is particularly helpful when the
@var{left-hand-side} and/or @var{right-hand-side} are composed of macro
-arguments, as shown in the following example.
+arguments, as shown in the following example. Be aware that
+@var{left-hand-side} may not contain unbalanced quotes or parenthesis.
@example
AC_DEFUN([MY_ARG_WITH],
This macro starts a group of related tests, all to be executed in the
same subshell. It accepts a single argument, which holds a few words
(no more than about 30 or 40 characters) quickly describing the purpose
-of the test group being started.
+of the test group being started. @var{test-group-name} must not contain
+unbalanced quotes or parenthesis.
@end defmac
@defmac AT_KEYWORDS (@var{keywords})
# m4_expand([active, active2])
# => ACT,IVE, ACT, IVE
#
+# Unfortunately, due to limitations in m4, ARG must contain balanced quotes
+# (use quadrigraphs) and balanced parenthesis (use creative shell comments
+# when writing shell case statements).
+#
# Splitting a quoted ARG on `,' preserves space, but produces a quoted list.
# Unquote the list, then expand each argument while preserving the leading
# spaces; finally, collect each argument back into the final string.