MCPcopy Index your code
hub / github.com/microsoft/typescript-go / parseNonArrayType

Method parseNonArrayType

internal/parser/parser.go:2756–2824  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

2754}
2755
2756func (p *Parser) parseNonArrayType() *ast.Node {
2757 switch p.token {
2758 case ast.KindAnyKeyword, ast.KindUnknownKeyword, ast.KindStringKeyword, ast.KindNumberKeyword, ast.KindBigIntKeyword,
2759 ast.KindSymbolKeyword, ast.KindBooleanKeyword, ast.KindUndefinedKeyword, ast.KindNeverKeyword, ast.KindObjectKeyword:
2760 state := p.mark()
2761 keywordTypeNode := p.parseKeywordTypeNode()
2762 // If these are followed by a dot then parse these out as a dotted type reference instead
2763 if p.token != ast.KindDotToken {
2764 return keywordTypeNode
2765 }
2766 p.rewind(state)
2767 return p.parseTypeReference()
2768 case ast.KindAsteriskEqualsToken:
2769 // If there is '*=', treat it as * followed by postfix =
2770 p.scanner.ReScanAsteriskEqualsToken()
2771 fallthrough
2772 case ast.KindAsteriskToken:
2773 return p.parseJSDocAllType()
2774 case ast.KindQuestionQuestionToken:
2775 // If there is '??', treat it as prefix-'?' in JSDoc type.
2776 p.scanner.ReScanQuestionToken()
2777 fallthrough
2778 case ast.KindQuestionToken:
2779 return p.parseJSDocNullableType()
2780 case ast.KindExclamationToken:
2781 return p.parseJSDocNonNullableType()
2782 case ast.KindNoSubstitutionTemplateLiteral, ast.KindStringLiteral, ast.KindNumericLiteral, ast.KindBigIntLiteral, ast.KindTrueKeyword,
2783 ast.KindFalseKeyword, ast.KindNullKeyword:
2784 return p.parseLiteralTypeNode(false /*negative*/)
2785 case ast.KindMinusToken:
2786 if p.lookAhead((*Parser).nextTokenIsNumericOrBigIntLiteral) {
2787 return p.parseLiteralTypeNode(true /*negative*/)
2788 }
2789 return p.parseTypeReference()
2790 case ast.KindVoidKeyword:
2791 return p.parseKeywordTypeNode()
2792 case ast.KindThisKeyword:
2793 thisKeyword := p.parseThisTypeNode()
2794 if p.token == ast.KindIsKeyword && !p.hasPrecedingLineBreak() {
2795 return p.parseThisTypePredicate(thisKeyword)
2796 }
2797 return thisKeyword
2798 case ast.KindTypeOfKeyword:
2799 if p.lookAhead((*Parser).nextIsStartOfTypeOfImportType) {
2800 return p.parseImportType()
2801 }
2802 return p.parseTypeQuery()
2803 case ast.KindOpenBraceToken:
2804 if p.lookAhead((*Parser).nextIsStartOfMappedType) {
2805 return p.parseMappedType()
2806 }
2807 return p.parseTypeLiteral()
2808 case ast.KindOpenBracketToken:
2809 return p.parseTupleType()
2810 case ast.KindOpenParenToken:
2811 return p.parseParenthesizedType()
2812 case ast.KindImportKeyword:
2813 return p.parseImportType()

Callers 1

Calls 15

markMethod · 0.95
parseKeywordTypeNodeMethod · 0.95
rewindMethod · 0.95
parseTypeReferenceMethod · 0.95
parseJSDocAllTypeMethod · 0.95
parseLiteralTypeNodeMethod · 0.95
lookAheadMethod · 0.95
parseThisTypeNodeMethod · 0.95
hasPrecedingLineBreakMethod · 0.95

Tested by

no test coverage detected