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

Method let

rhino/src/main/java/org/mozilla/javascript/Parser.java:2558–2595  ·  view source on GitHub ↗
(boolean isStatement, int pos)

Source from the content-addressed store, hash-verified

2556
2557 // have to pass in 'let' kwd position to compute kid offsets properly
2558 private AstNode let(boolean isStatement, int pos) throws IOException {
2559 LetNode pn = new LetNode(pos);
2560 pn.setLineColumnNumber(lineNumber(), columnNumber());
2561 if (mustMatchToken(Token.LP, "msg.no.paren.after.let", true)) pn.setLp(ts.tokenBeg - pos);
2562 pushScope(pn);
2563 try {
2564 VariableDeclaration vars = variables(Token.LET, ts.tokenBeg, isStatement);
2565 pn.setVariables(vars);
2566 if (mustMatchToken(Token.RP, "msg.no.paren.let", true)) {
2567 pn.setRp(ts.tokenBeg - pos);
2568 }
2569 if (isStatement && peekToken() == Token.LC) {
2570 // let statement
2571 consumeToken();
2572 int beg = ts.tokenBeg; // position stmt at LC
2573 AstNode stmt = statements();
2574 mustMatchToken(Token.RC, "msg.no.curly.let", true);
2575 stmt.setLength(ts.tokenEnd - beg);
2576 pn.setLength(ts.tokenEnd - pos);
2577 pn.setBody(stmt);
2578 pn.setType(Token.LET);
2579 } else {
2580 // let expression
2581 AstNode expr = expr(false);
2582 pn.setLength(getNodeEnd(expr) - pos);
2583 pn.setBody(expr);
2584 if (isStatement) {
2585 // let expression in statement context
2586 ExpressionStatement es = new ExpressionStatement(pn, !insideFunctionBody());
2587 es.setLineColumnNumber(pn.getLineno(), pn.getColumn());
2588 return es;
2589 }
2590 }
2591 } finally {
2592 popScope();
2593 }
2594 return pn;
2595 }
2596
2597 void defineSymbol(int declType, String name) {
2598 defineSymbol(declType, name, false);

Callers 2

letStatementMethod · 0.95
primaryExprMethod · 0.95

Calls 15

lineNumberMethod · 0.95
columnNumberMethod · 0.95
mustMatchTokenMethod · 0.95
setLpMethod · 0.95
pushScopeMethod · 0.95
variablesMethod · 0.95
setVariablesMethod · 0.95
setRpMethod · 0.95
peekTokenMethod · 0.95
consumeTokenMethod · 0.95
statementsMethod · 0.95
setLengthMethod · 0.95

Tested by

no test coverage detected