()
| 34070 | return token() === 21 /* SyntaxKind.CloseParenToken */ || isStartOfParameter(/*isJSDocParameter*/ false) || isStartOfType(); |
| 34071 | } |
| 34072 | function parsePostfixTypeOrHigher() { |
| 34073 | var pos = getNodePos(); |
| 34074 | var type = parseNonArrayType(); |
| 34075 | while (!scanner.hasPrecedingLineBreak()) { |
| 34076 | switch (token()) { |
| 34077 | case 53 /* SyntaxKind.ExclamationToken */: |
| 34078 | nextToken(); |
| 34079 | type = finishNode(factory.createJSDocNonNullableType(type, /*postfix*/ true), pos); |
| 34080 | break; |
| 34081 | case 57 /* SyntaxKind.QuestionToken */: |
| 34082 | // If next token is start of a type we have a conditional type |
| 34083 | if (lookAhead(nextTokenIsStartOfType)) { |
| 34084 | return type; |
| 34085 | } |
| 34086 | nextToken(); |
| 34087 | type = finishNode(factory.createJSDocNullableType(type, /*postfix*/ true), pos); |
| 34088 | break; |
| 34089 | case 22 /* SyntaxKind.OpenBracketToken */: |
| 34090 | parseExpected(22 /* SyntaxKind.OpenBracketToken */); |
| 34091 | if (isStartOfType()) { |
| 34092 | var indexType = parseType(); |
| 34093 | parseExpected(23 /* SyntaxKind.CloseBracketToken */); |
| 34094 | type = finishNode(factory.createIndexedAccessTypeNode(type, indexType), pos); |
| 34095 | } |
| 34096 | else { |
| 34097 | parseExpected(23 /* SyntaxKind.CloseBracketToken */); |
| 34098 | type = finishNode(factory.createArrayTypeNode(type), pos); |
| 34099 | } |
| 34100 | break; |
| 34101 | default: |
| 34102 | return type; |
| 34103 | } |
| 34104 | } |
| 34105 | return type; |
| 34106 | } |
| 34107 | function parseTypeOperator(operator) { |
| 34108 | var pos = getNodePos(); |
| 34109 | parseExpected(operator); |
nothing calls this directly
no test coverage detected
searching dependent graphs…