MCPcopy Index your code
hub / github.com/nodejs/node / parsePrimaryExpression

Function parsePrimaryExpression

test/fixtures/snapshot/typescript.js:35643–35688  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

35641 return !isStartOfExpression();
35642 }
35643 function parsePrimaryExpression() {
35644 switch (token()) {
35645 case 8 /* SyntaxKind.NumericLiteral */:
35646 case 9 /* SyntaxKind.BigIntLiteral */:
35647 case 10 /* SyntaxKind.StringLiteral */:
35648 case 14 /* SyntaxKind.NoSubstitutionTemplateLiteral */:
35649 return parseLiteralNode();
35650 case 108 /* SyntaxKind.ThisKeyword */:
35651 case 106 /* SyntaxKind.SuperKeyword */:
35652 case 104 /* SyntaxKind.NullKeyword */:
35653 case 110 /* SyntaxKind.TrueKeyword */:
35654 case 95 /* SyntaxKind.FalseKeyword */:
35655 return parseTokenNode();
35656 case 20 /* SyntaxKind.OpenParenToken */:
35657 return parseParenthesizedExpression();
35658 case 22 /* SyntaxKind.OpenBracketToken */:
35659 return parseArrayLiteralExpression();
35660 case 18 /* SyntaxKind.OpenBraceToken */:
35661 return parseObjectLiteralExpression();
35662 case 131 /* SyntaxKind.AsyncKeyword */:
35663 // Async arrow functions are parsed earlier in parseAssignmentExpressionOrHigher.
35664 // If we encounter `async [no LineTerminator here] function` then this is an async
35665 // function; otherwise, its an identifier.
35666 if (!lookAhead(nextTokenIsFunctionKeywordOnSameLine)) {
35667 break;
35668 }
35669 return parseFunctionExpression();
35670 case 84 /* SyntaxKind.ClassKeyword */:
35671 return parseClassExpression();
35672 case 98 /* SyntaxKind.FunctionKeyword */:
35673 return parseFunctionExpression();
35674 case 103 /* SyntaxKind.NewKeyword */:
35675 return parseNewExpressionOrNewDotTarget();
35676 case 43 /* SyntaxKind.SlashToken */:
35677 case 68 /* SyntaxKind.SlashEqualsToken */:
35678 if (reScanSlashToken() === 13 /* SyntaxKind.RegularExpressionLiteral */) {
35679 return parseLiteralNode();
35680 }
35681 break;
35682 case 15 /* SyntaxKind.TemplateHead */:
35683 return parseTemplateExpression(/* isTaggedTemplate */ false);
35684 case 80 /* SyntaxKind.PrivateIdentifier */:
35685 return parsePrivateIdentifier();
35686 }
35687 return parseIdentifier(ts.Diagnostics.Expression_expected);
35688 }
35689 function parseParenthesizedExpression() {
35690 var pos = getNodePos();
35691 var hasJSDoc = hasPrecedingJSDocComment();

Callers 2

Calls 14

parseLiteralNodeFunction · 0.85
parseTokenNodeFunction · 0.85
lookAheadFunction · 0.85
parseFunctionExpressionFunction · 0.85
parseClassExpressionFunction · 0.85
reScanSlashTokenFunction · 0.85
parseTemplateExpressionFunction · 0.85
parsePrivateIdentifierFunction · 0.85

Tested by

no test coverage detected