| 771 | } |
| 772 | |
| 773 | void fxImportNodeHoist(void* it, void* param) |
| 774 | { |
| 775 | txImportNode* self = it; |
| 776 | txHoister* hoister = param; |
| 777 | if (self->specifiers && self->specifiers->length) { |
| 778 | txSpecifierNode* specifier = (txSpecifierNode*)self->specifiers->first; |
| 779 | while (specifier) { |
| 780 | txDeclareNode* node; |
| 781 | txSymbol* symbol = specifier->asSymbol ? specifier->asSymbol : specifier->symbol; |
| 782 | if (self->flags & mxStrictFlag) { |
| 783 | if ((symbol == hoister->parser->argumentsSymbol) || (symbol == hoister->parser->evalSymbol)) |
| 784 | fxReportParserError(hoister->parser, self->line, "invalid import %s", symbol->string); |
| 785 | } |
| 786 | node = fxScopeGetDeclareNode(hoister->scope, symbol); |
| 787 | if (node) |
| 788 | fxReportParserError(hoister->parser, self->line, "duplicate variable %s", symbol->string); |
| 789 | else { |
| 790 | specifier->declaration = node = fxDeclareNodeNew(hoister->parser, XS_TOKEN_LET, symbol); |
| 791 | specifier->from = self->from; |
| 792 | specifier->with = self->with; |
| 793 | node->flags |= mxDeclareNodeClosureFlag | mxDeclareNodeUseClosureFlag; |
| 794 | node->line = self->line; |
| 795 | node->importSpecifier = specifier; |
| 796 | fxScopeAddDeclareNode(hoister->scope, node); |
| 797 | } |
| 798 | specifier = (txSpecifierNode*)specifier->next; |
| 799 | } |
| 800 | } |
| 801 | else { |
| 802 | txSpecifierNode* specifier = fxSpecifierNodeNew(hoister->parser, XS_TOKEN_SPECIFIER); |
| 803 | txDeclareNode* node = fxDeclareNodeNew(hoister->parser, XS_TOKEN_LET, C_NULL); |
| 804 | specifier->from = self->from; |
| 805 | specifier->with = self->with; |
| 806 | node->flags |= mxDeclareNodeClosureFlag | mxDeclareNodeUseClosureFlag; |
| 807 | node->line = self->line; |
| 808 | node->importSpecifier = specifier; |
| 809 | fxScopeAddDeclareNode(hoister->scope, node); |
| 810 | } |
| 811 | } |
| 812 | |
| 813 | void fxModuleNodeHoist(void* it, void* param) |
| 814 | { |
nothing calls this directly
no test coverage detected