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

Method _parseClassDef

server/src/parser/parser.ts:815–845  ·  view source on GitHub ↗
(decorators?: DecoratorNode[])

Source from the content-addressed store, hash-verified

813
814 // classdef: 'class' NAME ['(' [arglist] ')'] suite
815 private _parseClassDef(decorators?: DecoratorNode[]): ClassNode {
816 let classToken = this._getKeywordToken(KeywordType.Class);
817
818 let nameToken = this._getTokenIfIdentifier();
819 if (!nameToken) {
820 this._addError('Expected class name', this._peekToken());
821 nameToken = new IdentifierToken(0, 0, '');
822 }
823
824 let argList: ArgumentNode[] = [];
825 if (this._consumeTokenIfType(TokenType.OpenParenthesis)) {
826 argList = this._parseArgList();
827
828 if (!this._consumeTokenIfType(TokenType.CloseParenthesis)) {
829 this._addError('Expected ")"', this._peekToken());
830 }
831 }
832
833 let suite = this._parseSuite();
834
835 let classNode = new ClassNode(classToken, new NameNode(nameToken), suite);
836 classNode.arguments = argList;
837 if (decorators) {
838 classNode.decorators = decorators;
839 if (decorators.length > 0) {
840 classNode.extend(decorators[0]);
841 }
842 }
843
844 return classNode;
845 }
846
847 private _parsePassStatement(): PassNode {
848 return new PassNode(this._getKeywordToken(KeywordType.Pass));

Callers 2

_parseStatementMethod · 0.95
_parseDecoratedMethod · 0.95

Calls 8

_getKeywordTokenMethod · 0.95
_getTokenIfIdentifierMethod · 0.95
_addErrorMethod · 0.95
_peekTokenMethod · 0.95
_consumeTokenIfTypeMethod · 0.95
_parseArgListMethod · 0.95
_parseSuiteMethod · 0.95
extendMethod · 0.80

Tested by

no test coverage detected