(node *ast.Node)
| 1643 | } |
| 1644 | |
| 1645 | func (b *Binder) bindChildren(node *ast.Node) { |
| 1646 | saveInAssignmentPattern := b.inAssignmentPattern |
| 1647 | // Most nodes aren't valid in an assignment pattern, so we clear the value here |
| 1648 | // and set it before we descend into nodes that could actually be part of an assignment pattern. |
| 1649 | b.inAssignmentPattern = false |
| 1650 | |
| 1651 | if b.currentFlow == b.unreachableFlow { |
| 1652 | if flowNodeData := node.FlowNodeData(); flowNodeData != nil { |
| 1653 | flowNodeData.FlowNode = nil |
| 1654 | } |
| 1655 | if ast.IsPotentiallyExecutableNode(node) { |
| 1656 | node.Flags |= ast.NodeFlagsUnreachable |
| 1657 | } |
| 1658 | b.bindEachChild(node) |
| 1659 | b.inAssignmentPattern = saveInAssignmentPattern |
| 1660 | return |
| 1661 | } |
| 1662 | |
| 1663 | if ast.KindFirstStatement <= node.Kind && node.Kind <= ast.KindLastStatement { |
| 1664 | if flowNodeData := node.FlowNodeData(); flowNodeData != nil { |
| 1665 | flowNodeData.FlowNode = b.currentFlow |
| 1666 | } |
| 1667 | } |
| 1668 | |
| 1669 | switch node.Kind { |
| 1670 | case ast.KindWhileStatement: |
| 1671 | b.bindWhileStatement(node) |
| 1672 | case ast.KindDoStatement: |
| 1673 | b.bindDoStatement(node) |
| 1674 | case ast.KindForStatement: |
| 1675 | b.bindForStatement(node) |
| 1676 | case ast.KindForInStatement, ast.KindForOfStatement: |
| 1677 | b.bindForInOrForOfStatement(node) |
| 1678 | case ast.KindIfStatement: |
| 1679 | b.bindIfStatement(node) |
| 1680 | case ast.KindReturnStatement: |
| 1681 | b.bindReturnStatement(node) |
| 1682 | case ast.KindThrowStatement: |
| 1683 | b.bindThrowStatement(node) |
| 1684 | case ast.KindBreakStatement: |
| 1685 | b.bindBreakStatement(node) |
| 1686 | case ast.KindContinueStatement: |
| 1687 | b.bindContinueStatement(node) |
| 1688 | case ast.KindTryStatement: |
| 1689 | b.bindTryStatement(node) |
| 1690 | case ast.KindSwitchStatement: |
| 1691 | b.bindSwitchStatement(node) |
| 1692 | case ast.KindCaseBlock: |
| 1693 | b.bindCaseBlock(node) |
| 1694 | case ast.KindCaseClause, ast.KindDefaultClause: |
| 1695 | b.bindCaseOrDefaultClause(node) |
| 1696 | case ast.KindExpressionStatement: |
| 1697 | b.bindExpressionStatement(node) |
| 1698 | case ast.KindLabeledStatement: |
| 1699 | b.bindLabeledStatement(node) |
| 1700 | case ast.KindPrefixUnaryExpression: |
| 1701 | b.bindPrefixUnaryExpressionFlow(node) |
| 1702 | case ast.KindPostfixUnaryExpression: |
no test coverage detected