| 436 | } |
| 437 | |
| 438 | void fxCatchNodeHoist(void* it, void* param) |
| 439 | { |
| 440 | txCatchNode* self = it; |
| 441 | txHoister* hoister = param; |
| 442 | txDeclareNode* node; |
| 443 | if (self->parameter) { |
| 444 | self->scope = fxScopeNew(param, it, XS_TOKEN_BLOCK); |
| 445 | fxNodeDispatchHoist(self->parameter, param); |
| 446 | self->statementScope = fxScopeNew(param, it, XS_TOKEN_BLOCK); |
| 447 | fxNodeDispatchHoist(self->statement, param); |
| 448 | fxScopeHoisted(self->statementScope, param); |
| 449 | fxScopeHoisted(self->scope, param); |
| 450 | node = self->statementScope->firstDeclareNode; |
| 451 | while (node) { |
| 452 | if (fxScopeGetDeclareNode(self->scope, node->symbol)) |
| 453 | fxReportParserError(hoister->parser, node->line, "duplicate variable %s", node->symbol->string); |
| 454 | node = node->nextDeclareNode; |
| 455 | } |
| 456 | } |
| 457 | else { |
| 458 | self->statementScope = fxScopeNew(param, it, XS_TOKEN_BLOCK); |
| 459 | fxNodeDispatchHoist(self->statement, param); |
| 460 | fxScopeHoisted(self->statementScope, param); |
| 461 | } |
| 462 | } |
| 463 | |
| 464 | void fxClassNodeHoist(void* it, void* param) |
| 465 | { |
nothing calls this directly
no test coverage detected