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

Function fxArrowExpression

xs/sources/xsSyntaxical.c:2567–2597  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

2565}
2566
2567void fxArrowExpression(txParser* parser, txUnsigned flag)
2568{
2569 txInteger aLine = parser->states[0].line;
2570 txUnsigned flags = parser->flags;
2571 parser->flags &= ~(mxAsyncFlag | mxGeneratorFlag);
2572 parser->flags |= mxArrowFlag | flag;
2573 fxMatchToken(parser, XS_TOKEN_ARROW);
2574 fxPushNULL(parser);
2575 fxSwapNodes(parser);
2576 if (parser->states[0].token == XS_TOKEN_LEFT_BRACE) {
2577 fxMatchToken(parser, XS_TOKEN_LEFT_BRACE);
2578 fxBody(parser);
2579 fxPushNodeStruct(parser, 1, XS_TOKEN_BODY, aLine);
2580 fxMatchToken(parser, XS_TOKEN_RIGHT_BRACE);
2581 }
2582 else {
2583 fxAssignmentExpression(parser);
2584 fxPushNodeStruct(parser, 1, XS_TOKEN_RETURN, aLine);
2585 fxPushNodeStruct(parser, 1, XS_TOKEN_BODY, aLine);
2586 if (!(flags & mxAsyncFlag) && (flag & mxAsyncFlag)) {
2587 if (parser->states[0].token == XS_TOKEN_AWAIT) {
2588 parser->states[0].token = XS_TOKEN_IDENTIFIER;
2589 }
2590 }
2591 }
2592 fxPushNodeStruct(parser, 3, XS_TOKEN_FUNCTION, aLine);
2593 parser->root->flags = parser->flags & (mxStrictFlag | mxFieldFlag | mxNotSimpleParametersFlag | mxArrowFlag | mxSuperFlag | flag);
2594 if (!(flags & mxStrictFlag) && (parser->flags & mxStrictFlag))
2595 fxCheckStrictFunction(parser, (txFunctionNode*)parser->root);
2596 parser->flags = flags | (parser->flags & (mxArgumentsFlag | mxEvalFlag));
2597}
2598
2599void fxClassExpression(txParser* parser, txInteger theLine, txSymbol** theSymbol)
2600{

Callers 2

fxLiteralExpressionFunction · 0.85
fxGroupExpressionFunction · 0.85

Calls 7

fxMatchTokenFunction · 0.85
fxPushNULLFunction · 0.85
fxSwapNodesFunction · 0.85
fxBodyFunction · 0.85
fxPushNodeStructFunction · 0.85
fxAssignmentExpressionFunction · 0.85
fxCheckStrictFunctionFunction · 0.85

Tested by

no test coverage detected