* Processes the provided statement. * @param {IfStatement} statement if statement
(statement)
| 2444 | * @param {IfStatement} statement if statement |
| 2445 | */ |
| 2446 | walkIfStatement(statement) { |
| 2447 | const result = this.hooks.statementIf.call(statement); |
| 2448 | if (result === undefined) { |
| 2449 | const guard = this.hooks.collectGuards.call(statement.test); |
| 2450 | this.walkExpression(statement.test); |
| 2451 | this.walkGuardedBranch(guard ? guard.consequent : undefined, () => |
| 2452 | this.walkNestedStatement(statement.consequent) |
| 2453 | ); |
| 2454 | |
| 2455 | const consequentTerminated = this.scope.terminated; |
| 2456 | this.scope.terminated = undefined; |
| 2457 | |
| 2458 | if (statement.alternate) { |
| 2459 | const alternate = statement.alternate; |
| 2460 | this.walkGuardedBranch(guard ? guard.alternate : undefined, () => |
| 2461 | this.walkNestedStatement(alternate) |
| 2462 | ); |
| 2463 | } |
| 2464 | |
| 2465 | const alternateTerminated = this.scope.terminated; |
| 2466 | |
| 2467 | this.scope.terminated = |
| 2468 | consequentTerminated && alternateTerminated |
| 2469 | ? alternateTerminated |
| 2470 | : undefined; |
| 2471 | } else if (result) { |
| 2472 | this.walkNestedStatement(statement.consequent); |
| 2473 | } else if (statement.alternate) { |
| 2474 | this.walkNestedStatement(statement.alternate); |
| 2475 | } |
| 2476 | } |
| 2477 | |
| 2478 | /** |
| 2479 | * Pre walk labeled statement. |
no test coverage detected