| 224 | } |
| 225 | |
| 226 | void fxScopeBound(txScope* self, txBinder* binder) |
| 227 | { |
| 228 | if (self->flags & mxEvalFlag) { |
| 229 | txDeclareNode* node = self->firstDeclareNode; |
| 230 | while (node) { |
| 231 | node->flags |= mxDeclareNodeClosureFlag; |
| 232 | node = node->nextDeclareNode; |
| 233 | } |
| 234 | } |
| 235 | if (self->token == XS_TOKEN_MODULE) { |
| 236 | txDeclareNode* node = self->firstDeclareNode; |
| 237 | while (node) { |
| 238 | if (!(node->flags & mxDeclareNodeDisposableFlag)) |
| 239 | node->flags |= mxDeclareNodeClosureFlag | mxDeclareNodeUseClosureFlag; |
| 240 | node = node->nextDeclareNode; |
| 241 | } |
| 242 | } |
| 243 | else if (self->token == XS_TOKEN_PROGRAM) { |
| 244 | txDeclareNode* node = self->firstDeclareNode; |
| 245 | while (node) { |
| 246 | node->flags |= mxDeclareNodeClosureFlag | mxDeclareNodeUseClosureFlag; |
| 247 | node = node->nextDeclareNode; |
| 248 | } |
| 249 | } |
| 250 | binder->scopeLevel += self->closureNodeCount; |
| 251 | binder->scopeMaximum += self->closureNodeCount; |
| 252 | fxBinderPopVariables(binder, self->declareNodeCount); |
| 253 | binder->scope = self->scope; |
| 254 | } |
| 255 | |
| 256 | void fxScopeEval(txScope* self) |
| 257 | { |
no test coverage detected