On 17/07/2013 12:43, Mark Thomas wrote: > Violeta Georgieva <miles...@gmail.com> wrote: > >> Having the example from the test: >> (x->y->x-y)(2)(1) >> >> We may transform it like this: >> (()->y->2-y)()(1) >> >> So instead of returning right way when formalParameters.isEmpty() >> >> Shouldn't we have something like the one below in order to continue >> evaluation of the nested expression: >> >> >> >> --- org/apache/el/parser/AstLambdaExpression.java (revision 1504024) >> +++ org/apache/el/parser/AstLambdaExpression.java (working copy) >> @@ -54,9 +54,12 @@ >> LambdaExpression le = new LambdaExpression(formalParameters, ve); >> le.setELContext(ctx); >> >> + Object result = le; >> + int i = 2; >> if (formalParameters.isEmpty()) { >> // No formal parameters - invoke the expression >> - return le.invoke(ctx, (Object[]) null); >> + result = ((LambdaExpression) result).invoke(ctx, >> (Object[]) >> null); >> + i++; >> } >> >> // If there are method parameters, need to invoke the expression >> with >> @@ -64,8 +67,6 @@ >> // should be that many nested expressions. >> // If there are more nested expressions that parameters this will >> return >> // a LambdaExpression >> - Object result = le; >> - int i = 2; >> while (result instanceof LambdaExpression && i < >> jjtGetNumChildren()) { >> result = ((LambdaExpression) result).invoke( >> ((AstMethodParameters) >> children[i]).getParameters(ctx)); > > I agree the current solution isn't right but I have some local test cases > that I'm fairly sure will still fail with the above patch. I'm working on a > fix and should have something to commit soon.
Fix applied. What do you think? Mark --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org