(rbp, initial)
| 3210 | } |
| 3211 | |
| 3212 | function expression(rbp, initial) { |
| 3213 | var left, isArray = false, isObject = false, isLetExpr = false; |
| 3214 | |
| 3215 | state.nameStack.push(); |
| 3216 | if (!initial && state.tokens.next.value === "let" && peek(0).value === "(") { |
| 3217 | if (!state.option.inMoz(true)) { |
| 3218 | warning("W118", state.tokens.next, "let expressions"); |
| 3219 | } |
| 3220 | isLetExpr = true; |
| 3221 | funct["(blockscope)"].stack(); |
| 3222 | advance("let"); |
| 3223 | advance("("); |
| 3224 | state.tokens.prev.fud(); |
| 3225 | advance(")"); |
| 3226 | } |
| 3227 | |
| 3228 | if (state.tokens.next.id === "(end)") |
| 3229 | error("E006", state.tokens.curr); |
| 3230 | |
| 3231 | var isDangerous = |
| 3232 | state.option.asi && |
| 3233 | state.tokens.prev.line !== startLine(state.tokens.curr) && |
| 3234 | _.contains(["]", ")"], state.tokens.prev.id) && |
| 3235 | _.contains(["[", "("], state.tokens.curr.id); |
| 3236 | |
| 3237 | if (isDangerous) |
| 3238 | warning("W014", state.tokens.curr, state.tokens.curr.id); |
| 3239 | |
| 3240 | advance(); |
| 3241 | |
| 3242 | if (initial) { |
| 3243 | funct["(verb)"] = state.tokens.curr.value; |
| 3244 | state.tokens.curr.beginsStmt = true; |
| 3245 | } |
| 3246 | |
| 3247 | if (initial === true && state.tokens.curr.fud) { |
| 3248 | left = state.tokens.curr.fud(); |
| 3249 | } else { |
| 3250 | if (state.tokens.curr.nud) { |
| 3251 | left = state.tokens.curr.nud(); |
| 3252 | } else { |
| 3253 | error("E030", state.tokens.curr, state.tokens.curr.id); |
| 3254 | } |
| 3255 | while ((rbp < state.tokens.next.lbp || state.tokens.next.type === "(template)") && |
| 3256 | !isEndOfExpr()) { |
| 3257 | isArray = state.tokens.curr.value === "Array"; |
| 3258 | isObject = state.tokens.curr.value === "Object"; |
| 3259 | if (left && (left.value || (left.first && left.first.value))) { |
| 3260 | if (left.value !== "new" || |
| 3261 | (left.first && left.first.value && left.first.value === ".")) { |
| 3262 | isArray = false; |
| 3263 | if (left.value !== state.tokens.curr.value) { |
| 3264 | isObject = false; |
| 3265 | } |
| 3266 | } |
| 3267 | } |
| 3268 | |
| 3269 | advance(); |
no test coverage detected