This is an automated email from the ASF dual-hosted git repository. ddekany pushed a commit to branch 2.3-gae in repository https://gitbox.apache.org/repos/asf/freemarker.git
commit ccae3935a6e8a32a11225898d462af591e296f1f Author: ddekany <[email protected]> AuthorDate: Wed Oct 23 20:57:29 2019 +0200 Macro catch-all parameters (aka. macro varargs), when capture arguments passed by name (as opposed to by position), now keep the order of arguments. --- src/main/java/freemarker/core/Environment.java | 3 ++- src/manual/en_US/book.xml | 16 +++++++++++----- 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/src/main/java/freemarker/core/Environment.java b/src/main/java/freemarker/core/Environment.java index a048681..13ef380 100644 --- a/src/main/java/freemarker/core/Environment.java +++ b/src/main/java/freemarker/core/Environment.java @@ -36,6 +36,7 @@ import java.util.Date; import java.util.HashMap; import java.util.IdentityHashMap; import java.util.Iterator; +import java.util.LinkedHashMap; import java.util.List; import java.util.Locale; import java.util.Map; @@ -1047,7 +1048,7 @@ public final class Environment extends Configurable { private static SimpleHash initNamedCatchAllParameter(Macro.Context macroCtx, String catchAllParamName) { SimpleHash namedCatchAllParamValue; - namedCatchAllParamValue = new SimpleHash((ObjectWrapper) null); + namedCatchAllParamValue = new SimpleHash(new LinkedHashMap<String, Object>(), null, 0); macroCtx.setLocalVar(catchAllParamName, namedCatchAllParamValue); return namedCatchAllParamValue; } diff --git a/src/manual/en_US/book.xml b/src/manual/en_US/book.xml index 53557df..83e7a50 100644 --- a/src/manual/en_US/book.xml +++ b/src/manual/en_US/book.xml @@ -22831,11 +22831,10 @@ or myns:bar=7</programlisting> <warning> - <para>Currently, named catch-all parameters are unordered, that - is, you don't know what order will they be enumerated. That is, - they aren't returned in the same order as they were passed in - (that above example output shows them in the same order for - understandability only).</para> + <para>Before FreeMarker 2.3.30, named catch-all parameters are + unordered, that is, you don't know what order will they be + enumerated. Only starting from 2.3.30 are they returned in the + same order as they were passed in.</para> </warning> <section> @@ -28769,6 +28768,13 @@ TemplateModel x = env.getVariable("x"); // get variable x</programlisting> </listitem> <listitem> + <para><link linkend="ref.directive.macro">Macro catch-all + parameters</link> (aka. macro varargs), when capture arguments + passed by name (as opposed to by position), now keep the order + of arguments.</para> + </listitem> + + <listitem> <para>Bug fixed: In <literal><#escape <replaceable>placeholder</replaceable> as <replaceable>escExpression</replaceable>></literal>, the
