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