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>&lt;#escape
               <replaceable>placeholder</replaceable> as
               <replaceable>escExpression</replaceable>&gt;</literal>, the

Reply via email to