MCPcopy
hub / github.com/microsoft/pyright / _parseArgument

Method _parseArgument

server/src/parser/parser.ts:1740–1777  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

1738 // '**' test |
1739 // '*' test )
1740 private _parseArgument(): ArgumentNode {
1741 let firstToken = this._peekToken();
1742
1743 let argType = ArgumentCategory.Simple;
1744 if (this._consumeTokenIfOperator(OperatorType.Multiply)) {
1745 argType = ArgumentCategory.List;
1746 } else if (this._consumeTokenIfOperator(OperatorType.Power)) {
1747 argType = ArgumentCategory.Dictionary;
1748 }
1749
1750 let valueExpr = this._parseTestExpression();
1751 let nameIdentifier: IdentifierToken | undefined;
1752
1753 if (argType === ArgumentCategory.Simple) {
1754 if (this._consumeTokenIfOperator(OperatorType.Assign)) {
1755 let nameExpr = valueExpr;
1756 valueExpr = this._parseTestExpression();
1757
1758 if (nameExpr instanceof NameNode) {
1759 nameIdentifier = nameExpr.nameToken;
1760 } else {
1761 this._addError('Expected parameter name', nameExpr);
1762 }
1763 } else {
1764 let listComp = this._tryParseListComprehension(valueExpr);
1765 if (listComp) {
1766 valueExpr = listComp;
1767 }
1768 }
1769 }
1770
1771 let argNode = new ArgumentNode(firstToken, valueExpr, argType);
1772 if (nameIdentifier) {
1773 argNode.name = new NameNode(nameIdentifier);
1774 }
1775
1776 return argNode;
1777 }
1778
1779 // atom: ('(' [yield_expr | testlist_comp] ')' |
1780 // '[' [testlist_comp] ']' |

Callers 1

_parseArgListMethod · 0.95

Calls 5

_peekTokenMethod · 0.95
_parseTestExpressionMethod · 0.95
_addErrorMethod · 0.95

Tested by

no test coverage detected