-
Bug
-
Resolution: Done
-
Major
-
jboss-el-api_3.0_spec-1.0.2.Final
When a lambda expression is exited with an exception, its variables are left on stack and cannot be removed from it without hacks. My usecase is a customly defined function that uses exceptions as means of non-local exit, but the bug triggers even without custom functions, as demonstrated below.
Test case:
ELProcessor processor = new ELProcessor (); processor.defineBean ("x", null); try { processor.eval ("(x -> x.bug ()) ('bug')"); } catch (RuntimeException exception) { // This is expected, there is no method bug() on strings. } processor.eval ("x"); // This must evaluate to null, but instead evaluates to "bug".
Proposed fix will be attached as a short patch against 'javax/el/LambdaExpression.java'.