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.

Mark


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

Reply via email to