MCPcopy Create free account
hub / github.com/Moddable-OpenSource/moddable / fxImportNodeHoist

Function fxImportNodeHoist

xs/sources/xsScope.c:773–811  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

771}
772
773void 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
813void fxModuleNodeHoist(void* it, void* param)
814{

Callers

nothing calls this directly

Calls 5

fxReportParserErrorFunction · 0.85
fxScopeGetDeclareNodeFunction · 0.85
fxDeclareNodeNewFunction · 0.85
fxScopeAddDeclareNodeFunction · 0.85
fxSpecifierNodeNewFunction · 0.85

Tested by

no test coverage detected