()
| 2202 | } |
| 2203 | |
| 2204 | private WithStatement withStatement() throws IOException { |
| 2205 | if (currentToken != Token.WITH) codeBug(); |
| 2206 | consumeToken(); |
| 2207 | |
| 2208 | Comment withComment = getAndResetJsDoc(); |
| 2209 | |
| 2210 | int lineno = lineNumber(), column = columnNumber(), pos = ts.tokenBeg, lp = -1, rp = -1; |
| 2211 | if (mustMatchToken(Token.LP, "msg.no.paren.with", true)) lp = ts.tokenBeg; |
| 2212 | |
| 2213 | AstNode obj = expr(false); |
| 2214 | |
| 2215 | if (mustMatchToken(Token.RP, "msg.no.paren.after.with", true)) rp = ts.tokenBeg; |
| 2216 | |
| 2217 | WithStatement pn = new WithStatement(pos); |
| 2218 | |
| 2219 | boolean previous = hasUndefinedBeenRedefined; |
| 2220 | try { |
| 2221 | hasUndefinedBeenRedefined = true; |
| 2222 | AstNode body = getNextStatementAfterInlineComments(pn); |
| 2223 | |
| 2224 | pn.setLength(getNodeEnd(body) - pos); |
| 2225 | pn.setJsDocNode(withComment); |
| 2226 | pn.setExpression(obj); |
| 2227 | pn.setStatement(body); |
| 2228 | pn.setParens(lp, rp); |
| 2229 | pn.setLineColumnNumber(lineno, column); |
| 2230 | } finally { |
| 2231 | hasUndefinedBeenRedefined = previous; |
| 2232 | } |
| 2233 | |
| 2234 | return pn; |
| 2235 | } |
| 2236 | |
| 2237 | private AstNode letStatement() throws IOException { |
| 2238 | if (currentToken != Token.LET) codeBug(); |
no test coverage detected