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

Function fxReturnNodeCode

xs/sources/xsCode.c:4272–4295  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

4270}
4271
4272void fxReturnNodeCode(void* it, void* param)
4273{
4274 txStatementNode* self = it;
4275 txCoder* coder = param;
4276 if (coder->programFlag)
4277 fxReportParserError(coder->parser, self->line, "invalid return");
4278 if (self->expression) {
4279 if (((self->flags & (mxStrictFlag | mxGeneratorFlag)) == mxStrictFlag) && (coder->returnTarget->original == NULL))
4280 self->expression->flags |= mxTailRecursionFlag;
4281 fxNodeDispatchCode(self->expression, param);
4282 if ((self->flags & (mxAsyncFlag | mxGeneratorFlag)) == (mxAsyncFlag | mxGeneratorFlag)) {
4283 fxCoderAddByte(param, 0, XS_CODE_AWAIT);
4284 fxCoderAddByte(coder, 0, XS_CODE_THROW_STATUS);
4285 }
4286 fxCoderAddByte(param, -1, XS_CODE_SET_RESULT);
4287 }
4288 else if ((self->flags & (mxAsyncFlag | mxGeneratorFlag)) != (mxAsyncFlag | mxGeneratorFlag)) {
4289 fxCoderAddByte(param, 1, XS_CODE_UNDEFINED);
4290 fxCoderAddByte(param, -1, XS_CODE_SET_RESULT);
4291 }
4292 fxCoderAdjustEnvironment(coder, coder->returnTarget);
4293 fxCoderAdjustScope(coder, coder->returnTarget);
4294 fxCoderAddBranch(param, 0, XS_CODE_BRANCH_1, coder->returnTarget);
4295}
4296
4297void fxSpreadNodeCode(void* it, void* param, txInteger counter)
4298{

Callers

nothing calls this directly

Calls 6

fxReportParserErrorFunction · 0.85
fxNodeDispatchCodeFunction · 0.85
fxCoderAddByteFunction · 0.85
fxCoderAdjustEnvironmentFunction · 0.85
fxCoderAdjustScopeFunction · 0.85
fxCoderAddBranchFunction · 0.85

Tested by

no test coverage detected