| 648 | } |
| 649 | |
| 650 | void fxExportNodeHoist(void* it, void* param) |
| 651 | { |
| 652 | txExportNode* self = it; |
| 653 | txHoister* hoister = param; |
| 654 | if (self->from) { |
| 655 | if (self->specifiers && self->specifiers->length) { |
| 656 | txSpecifierNode* specifier = (txSpecifierNode*)self->specifiers->first; |
| 657 | while (specifier) { |
| 658 | txDeclareNode* node = fxDeclareNodeNew(hoister->parser, XS_TOKEN_LET, C_NULL); |
| 659 | specifier->from = self->from; |
| 660 | specifier->with = self->with; |
| 661 | node->flags |= mxDeclareNodeClosureFlag | mxDeclareNodeUseClosureFlag; |
| 662 | node->line = self->line; |
| 663 | node->importSpecifier = specifier; |
| 664 | node->firstExportSpecifier = specifier; |
| 665 | fxScopeAddDeclareNode(hoister->scope, node); |
| 666 | specifier = (txSpecifierNode*)specifier->next; |
| 667 | } |
| 668 | } |
| 669 | else { |
| 670 | txSpecifierNode* specifier = fxSpecifierNodeNew(hoister->parser, XS_TOKEN_SPECIFIER); |
| 671 | txDeclareNode* node = fxDeclareNodeNew(hoister->parser, XS_TOKEN_LET, C_NULL); |
| 672 | specifier->from = self->from; |
| 673 | specifier->with = self->with; |
| 674 | node->flags |= mxDeclareNodeClosureFlag | mxDeclareNodeUseClosureFlag; |
| 675 | node->line = self->line; |
| 676 | node->importSpecifier = specifier; |
| 677 | node->firstExportSpecifier = C_NULL; |
| 678 | fxScopeAddDeclareNode(hoister->scope, node); |
| 679 | } |
| 680 | } |
| 681 | if (self->specifiers && self->specifiers->length) { |
| 682 | txSpecifierNode* specifier = (txSpecifierNode*)self->specifiers->first; |
| 683 | while (specifier) { |
| 684 | fxHoisterAddExportLink(hoister, specifier); |
| 685 | fxNodeDispatchHoist(specifier, param); |
| 686 | specifier = (txSpecifierNode*)specifier->next; |
| 687 | } |
| 688 | } |
| 689 | } |
| 690 | |
| 691 | void fxForNodeHoist(void* it, void* param) |
| 692 | { |
nothing calls this directly
no test coverage detected