()
| 33685 | return withJSDoc(finishNode(node, pos), hasJSDoc); |
| 33686 | } |
| 33687 | function isTypeMemberStart() { |
| 33688 | // Return true if we have the start of a signature member |
| 33689 | if (token() === 20 /* SyntaxKind.OpenParenToken */ || |
| 33690 | token() === 29 /* SyntaxKind.LessThanToken */ || |
| 33691 | token() === 136 /* SyntaxKind.GetKeyword */ || |
| 33692 | token() === 149 /* SyntaxKind.SetKeyword */) { |
| 33693 | return true; |
| 33694 | } |
| 33695 | var idToken = false; |
| 33696 | // Eat up all modifiers, but hold on to the last one in case it is actually an identifier |
| 33697 | while (ts.isModifierKind(token())) { |
| 33698 | idToken = true; |
| 33699 | nextToken(); |
| 33700 | } |
| 33701 | // Index signatures and computed property names are type members |
| 33702 | if (token() === 22 /* SyntaxKind.OpenBracketToken */) { |
| 33703 | return true; |
| 33704 | } |
| 33705 | // Try to get the first property-like token following all modifiers |
| 33706 | if (isLiteralPropertyName()) { |
| 33707 | idToken = true; |
| 33708 | nextToken(); |
| 33709 | } |
| 33710 | // If we were able to get any potential identifier, check that it is |
| 33711 | // the start of a member declaration |
| 33712 | if (idToken) { |
| 33713 | return token() === 20 /* SyntaxKind.OpenParenToken */ || |
| 33714 | token() === 29 /* SyntaxKind.LessThanToken */ || |
| 33715 | token() === 57 /* SyntaxKind.QuestionToken */ || |
| 33716 | token() === 58 /* SyntaxKind.ColonToken */ || |
| 33717 | token() === 27 /* SyntaxKind.CommaToken */ || |
| 33718 | canParseSemicolon(); |
| 33719 | } |
| 33720 | return false; |
| 33721 | } |
| 33722 | function parseTypeMember() { |
| 33723 | if (token() === 20 /* SyntaxKind.OpenParenToken */ || token() === 29 /* SyntaxKind.LessThanToken */) { |
| 33724 | return parseSignatureMember(174 /* SyntaxKind.CallSignature */); |
nothing calls this directly
no test coverage detected