Author: markt
Date: Wed Jul 17 20:07:48 2013
New Revision: 1504256

URL: http://svn.apache.org/r1504256
Log:
More nested lambda expression fixes.
Includes another test case and some simple debug code aimed at IDE debuggers.

Modified:
    tomcat/trunk/java/org/apache/el/parser/AstLambdaExpression.java
    tomcat/trunk/java/org/apache/el/parser/AstLambdaParameters.java
    tomcat/trunk/java/org/apache/el/parser/AstMethodParameters.java
    tomcat/trunk/test/org/apache/el/parser/TestAstLambdaExpression.java

Modified: tomcat/trunk/java/org/apache/el/parser/AstLambdaExpression.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/el/parser/AstLambdaExpression.java?rev=1504256&r1=1504255&r2=1504256&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/el/parser/AstLambdaExpression.java (original)
+++ tomcat/trunk/java/org/apache/el/parser/AstLambdaExpression.java Wed Jul 17 
20:07:48 2013
@@ -95,9 +95,24 @@ public class AstLambdaExpression extends
             result = ((LambdaExpression) result).invoke(
                     ((AstMethodParameters) children[i]).getParameters(ctx));
             i++;
+            while (i < jjtGetNumChildren() && children[i].jjtGetNumChildren() 
== 0) {
+                i++;
+            }
         }
 
         return result;
     }
+
+
+    @Override
+    public String toString() {
+        // Purely for debug purposes. May not be complete or correct. Certainly
+        // is not efficient. Be sure not to call this from 'real' code.
+        StringBuilder result = new StringBuilder();
+        for (Node n : children) {
+            result.append(n.toString());
+        }
+        return result.toString();
+    }
 }
 /* JavaCC - OriginalChecksum=071159eff10c8e15ec612c765ae4480a (do not edit 
this line) */

Modified: tomcat/trunk/java/org/apache/el/parser/AstLambdaParameters.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/el/parser/AstLambdaParameters.java?rev=1504256&r1=1504255&r2=1504256&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/el/parser/AstLambdaParameters.java (original)
+++ tomcat/trunk/java/org/apache/el/parser/AstLambdaParameters.java Wed Jul 17 
20:07:48 2013
@@ -17,10 +17,27 @@
 /* Generated By:JJTree: Do not edit this line. AstLambdaParameters.java 
Version 4.3 */
 package org.apache.el.parser;
 
-public
-class AstLambdaParameters extends SimpleNode {
-  public AstLambdaParameters(int id) {
-    super(id);
-  }
+public class AstLambdaParameters extends SimpleNode {
+
+    public AstLambdaParameters(int id) {
+        super(id);
+    }
+
+    @Override
+    public String toString() {
+        // Purely for debug purposes. May not be complete or correct. Certainly
+        // is not efficient. Be sure not to call this from 'real' code.
+        StringBuilder result = new StringBuilder();
+        result.append('(');
+        if (children != null) {
+            for (Node n : children) {
+                result.append(n.toString());
+                result.append(',');
+            }
+        }
+        result.append(")->");
+        return result.toString();
+    }
+
 }
 /* JavaCC - OriginalChecksum=a8c1609257dac59e41c43d6ed91072c6 (do not edit 
this line) */

Modified: tomcat/trunk/java/org/apache/el/parser/AstMethodParameters.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/el/parser/AstMethodParameters.java?rev=1504256&r1=1504255&r2=1504256&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/el/parser/AstMethodParameters.java (original)
+++ tomcat/trunk/java/org/apache/el/parser/AstMethodParameters.java Wed Jul 17 
20:07:48 2013
@@ -37,4 +37,20 @@ public final class AstMethodParameters e
         }
         return params.toArray(new Object[params.size()]);
     }
+
+    @Override
+    public String toString() {
+        // Purely for debug purposes. May not be complete or correct. Certainly
+        // is not efficient. Be sure not to call this from 'real' code.
+        StringBuilder result = new StringBuilder();
+        result.append('(');
+        if (children != null) {
+            for (Node n : children) {
+                result.append(n.toString());
+                result.append(',');
+            }
+        }
+        result.append(')');
+        return result.toString();
+    }
 }

Modified: tomcat/trunk/test/org/apache/el/parser/TestAstLambdaExpression.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/test/org/apache/el/parser/TestAstLambdaExpression.java?rev=1504256&r1=1504255&r2=1504256&view=diff
==============================================================================
--- tomcat/trunk/test/org/apache/el/parser/TestAstLambdaExpression.java 
(original)
+++ tomcat/trunk/test/org/apache/el/parser/TestAstLambdaExpression.java Wed Jul 
17 20:07:48 2013
@@ -116,7 +116,7 @@ public class TestAstLambdaExpression {
     }
 
 
-    @Test(expected=ELException.class)
+    @Test
     public void testNested04() {
         ELProcessor processor = new ELProcessor();
         Object result =
@@ -124,4 +124,14 @@ public class TestAstLambdaExpression {
                         Integer.class);
         Assert.assertEquals(Integer.valueOf(1), result);
     }
+
+
+    @Test
+    public void testNested05() {
+        ELProcessor processor = new ELProcessor();
+        Object result =
+                processor.getValue("(()->y->()->()->x->x-y)()(1)()()(2)",
+                        Integer.class);
+        Assert.assertEquals(Integer.valueOf(1), result);
+    }
 }



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org

Reply via email to