nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/codegen/AssignSymbols.java
equal
deleted
inserted
replaced
710 final FunctionNode definingFn = lc.getDefiningFunction(symbol); |
710 final FunctionNode definingFn = lc.getDefiningFunction(symbol); |
711 assert definingFn != null; |
711 assert definingFn != null; |
712 return definingFn == function; |
712 return definingFn == function; |
713 } |
713 } |
714 |
714 |
715 private void checkConstAssignment(final IdentNode ident) { |
|
716 // Check for reassignment of constant |
|
717 final Symbol symbol = ident.getSymbol(); |
|
718 if (symbol.isConst()) { |
|
719 throwParserException(ECMAErrors.getMessage("syntax.error.assign.constant", symbol.getName()), ident); |
|
720 } |
|
721 } |
|
722 |
|
723 @Override |
715 @Override |
724 public Node leaveBinaryNode(final BinaryNode binaryNode) { |
716 public Node leaveBinaryNode(final BinaryNode binaryNode) { |
725 if (binaryNode.isAssignment() && binaryNode.lhs() instanceof IdentNode) { |
|
726 checkConstAssignment((IdentNode) binaryNode.lhs()); |
|
727 } |
|
728 switch (binaryNode.tokenType()) { |
717 switch (binaryNode.tokenType()) { |
729 case ASSIGN: |
718 case ASSIGN: |
730 return leaveASSIGN(binaryNode); |
719 return leaveASSIGN(binaryNode); |
731 default: |
720 default: |
732 return super.leaveBinaryNode(binaryNode); |
721 return super.leaveBinaryNode(binaryNode); |
749 return binaryNode; |
738 return binaryNode; |
750 } |
739 } |
751 |
740 |
752 @Override |
741 @Override |
753 public Node leaveUnaryNode(final UnaryNode unaryNode) { |
742 public Node leaveUnaryNode(final UnaryNode unaryNode) { |
754 if (unaryNode.isAssignment() && unaryNode.getExpression() instanceof IdentNode) { |
|
755 checkConstAssignment((IdentNode) unaryNode.getExpression()); |
|
756 } |
|
757 switch (unaryNode.tokenType()) { |
743 switch (unaryNode.tokenType()) { |
758 case DELETE: |
744 case DELETE: |
759 return leaveDELETE(unaryNode); |
745 return leaveDELETE(unaryNode); |
760 case TYPEOF: |
746 case TYPEOF: |
761 return leaveTYPEOF(unaryNode); |
747 return leaveTYPEOF(unaryNode); |