--- old/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/parser/Parser.java 2015-08-18 22:28:58.424579500 +0530 +++ new/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/parser/Parser.java 2015-08-18 22:28:58.035557300 +0530 @@ -3237,6 +3237,7 @@ } /** + * {@code * MultiplicativeExpression : * UnaryExpression * MultiplicativeExpression * UnaryExpression @@ -3323,11 +3324,15 @@ * Expression , AssignmentExpression * * See 11.14 + * } * * Parse expression. * @return Expression node. */ - private Expression expression() { + protected Expression expression() { + // This method is protected so that subclass can get details + // at expression start point! + // TODO - Destructuring array. // Include commas in expression parsing. return expression(unaryExpression(), COMMARIGHT.getPrecedence(), false); @@ -3337,7 +3342,7 @@ return new JoinPredecessorExpression(expression()); } - private Expression expression(final Expression exprLhs, final int minPrecedence, final boolean noIn) { + protected Expression expression(final Expression exprLhs, final int minPrecedence, final boolean noIn) { // Get the precedence of the next operator. int precedence = type.getPrecedence(); Expression lhs = exprLhs; @@ -3398,7 +3403,10 @@ return lhs; } - private Expression assignmentExpression(final boolean noIn) { + protected Expression assignmentExpression(final boolean noIn) { + // This method is protected so that subclass can get details + // at assignment expression start point! + // TODO - Handle decompose. // Exclude commas in expression parsing. return expression(unaryExpression(), ASSIGN.getPrecedence(), noIn);