* Tries to enter or leave a code block.
(operationIndex)
| 104133 | * Tries to enter or leave a code block. |
| 104134 | */ |
| 104135 | function tryEnterOrLeaveBlock(operationIndex) { |
| 104136 | if (blocks) { |
| 104137 | for (; blockIndex < blockActions.length && blockOffsets[blockIndex] <= operationIndex; blockIndex++) { |
| 104138 | var block = blocks[blockIndex]; |
| 104139 | var blockAction = blockActions[blockIndex]; |
| 104140 | switch (block.kind) { |
| 104141 | case 0 /* CodeBlockKind.Exception */: |
| 104142 | if (blockAction === 0 /* BlockAction.Open */) { |
| 104143 | if (!exceptionBlockStack) { |
| 104144 | exceptionBlockStack = []; |
| 104145 | } |
| 104146 | if (!statements) { |
| 104147 | statements = []; |
| 104148 | } |
| 104149 | exceptionBlockStack.push(currentExceptionBlock); |
| 104150 | currentExceptionBlock = block; |
| 104151 | } |
| 104152 | else if (blockAction === 1 /* BlockAction.Close */) { |
| 104153 | currentExceptionBlock = exceptionBlockStack.pop(); |
| 104154 | } |
| 104155 | break; |
| 104156 | case 1 /* CodeBlockKind.With */: |
| 104157 | if (blockAction === 0 /* BlockAction.Open */) { |
| 104158 | if (!withBlockStack) { |
| 104159 | withBlockStack = []; |
| 104160 | } |
| 104161 | withBlockStack.push(block); |
| 104162 | } |
| 104163 | else if (blockAction === 1 /* BlockAction.Close */) { |
| 104164 | withBlockStack.pop(); |
| 104165 | } |
| 104166 | break; |
| 104167 | // default: do nothing |
| 104168 | } |
| 104169 | } |
| 104170 | } |
| 104171 | } |
| 104172 | /** |
| 104173 | * Writes an operation as a statement to the current label's statement list. |
| 104174 | * |
no test coverage detected