MCPcopy Create free account
hub / github.com/mozilla/rhino / assignExpr

Method assignExpr

rhino/src/main/java/org/mozilla/javascript/Parser.java:2684–2731  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

2682 }
2683
2684 private AstNode assignExpr() throws IOException {
2685 int tt = peekToken();
2686 if (tt == Token.YIELD) {
2687 return returnOrYield(tt, true);
2688 }
2689
2690 // Intentionally not calling lineNumber/columnNumber here!
2691 // We have not consumed any token yet, so the position would be invalid
2692 int startLine = ts.lineno, startColumn = ts.getTokenColumn();
2693
2694 AstNode pn = condExpr();
2695 boolean hasEOL = false;
2696 tt = peekTokenOrEOL();
2697 if (tt == Token.EOL) {
2698 hasEOL = true;
2699 tt = peekToken();
2700 }
2701 if (Token.FIRST_ASSIGN <= tt && tt <= Token.LAST_ASSIGN) {
2702 consumeToken();
2703
2704 // Pull out JSDoc info and reset it before recursing.
2705 Comment jsdocNode = getAndResetJsDoc();
2706
2707 markDestructuring(pn);
2708 int opPos = ts.tokenBeg;
2709 if (isNotValidSimpleAssignmentTarget(pn))
2710 reportError("msg.syntax.invalid.assignment.lhs");
2711
2712 pn = new Assignment(tt, pn, assignExpr(), opPos);
2713
2714 if (jsdocNode != null) {
2715 pn.setJsDocNode(jsdocNode);
2716 }
2717 } else if (tt == Token.SEMI) {
2718 // This may be dead code added intentionally, for JSDoc purposes.
2719 // For example: /** @type Number */ C.prototype.x;
2720 if (currentJsDocComment != null) {
2721 pn.setJsDocNode(getAndResetJsDoc());
2722 }
2723 } else if (!hasEOL && tt == Token.ARROW) {
2724 consumeToken();
2725 pn = arrowFunction(pn, startLine, startColumn);
2726 } else if (pn.getIntProp(Node.OBJECT_LITERAL_DESTRUCTURING, 0) == 1
2727 && !inDestructuringAssignment) {
2728 reportError("msg.syntax");
2729 }
2730 return pn;
2731 }
2732
2733 private static boolean isNotValidSimpleAssignmentTarget(AstNode pn) {
2734 if (pn.getType() == Token.GETPROP)

Callers 11

parseFunctionBodyMethod · 0.95
parseFunctionParamsMethod · 0.95
variablesMethod · 0.95
exprMethod · 0.95
condExprMethod · 0.95
argumentListMethod · 0.95
primaryExprMethod · 0.95
arrayLiteralMethod · 0.95
objliteralPropertyMethod · 0.95
plainPropertyMethod · 0.95

Calls 13

peekTokenMethod · 0.95
returnOrYieldMethod · 0.95
condExprMethod · 0.95
peekTokenOrEOLMethod · 0.95
consumeTokenMethod · 0.95
getAndResetJsDocMethod · 0.95
markDestructuringMethod · 0.95
reportErrorMethod · 0.95
arrowFunctionMethod · 0.95
getTokenColumnMethod · 0.80
setJsDocNodeMethod · 0.80

Tested by

no test coverage detected