(node *ast.TypeNode, precedence ast.TypePrecedence)
| 2272 | } |
| 2273 | |
| 2274 | func (p *Printer) emitTypeNode(node *ast.TypeNode, precedence ast.TypePrecedence) { |
| 2275 | if p.inExtends && precedence <= ast.TypePrecedenceConditional { |
| 2276 | // in the `extends` clause of a ConditionalType or InferType, a ConditionalType must be parenthesized |
| 2277 | precedence = ast.TypePrecedenceFunction |
| 2278 | } |
| 2279 | |
| 2280 | savedInExtends := p.inExtends |
| 2281 | parens := ast.GetTypeNodePrecedence(node) < precedence |
| 2282 | if parens { |
| 2283 | p.inExtends = false |
| 2284 | p.writePunctuation("(") |
| 2285 | } |
| 2286 | |
| 2287 | switch node.Kind { |
| 2288 | // Keyword Types |
| 2289 | case ast.KindAnyKeyword, |
| 2290 | ast.KindUnknownKeyword, |
| 2291 | ast.KindNumberKeyword, |
| 2292 | ast.KindBigIntKeyword, |
| 2293 | ast.KindObjectKeyword, |
| 2294 | ast.KindBooleanKeyword, |
| 2295 | ast.KindStringKeyword, |
| 2296 | ast.KindSymbolKeyword, |
| 2297 | ast.KindVoidKeyword, |
| 2298 | ast.KindUndefinedKeyword, |
| 2299 | ast.KindNeverKeyword, |
| 2300 | ast.KindIntrinsicKeyword: |
| 2301 | p.emitKeywordTypeNode(node.AsKeywordTypeNode()) |
| 2302 | |
| 2303 | // Types |
| 2304 | case ast.KindTypePredicate: |
| 2305 | p.emitTypePredicate(node.AsTypePredicateNode()) |
| 2306 | case ast.KindTypeReference: |
| 2307 | p.emitTypeReference(node.AsTypeReferenceNode()) |
| 2308 | case ast.KindFunctionType: |
| 2309 | p.emitFunctionType(node.AsFunctionTypeNode()) |
| 2310 | case ast.KindConstructorType: |
| 2311 | p.emitConstructorType(node.AsConstructorTypeNode()) |
| 2312 | case ast.KindTypeQuery: |
| 2313 | p.emitTypeQuery(node.AsTypeQueryNode()) |
| 2314 | case ast.KindTypeLiteral: |
| 2315 | p.emitTypeLiteral(node.AsTypeLiteralNode()) |
| 2316 | case ast.KindArrayType: |
| 2317 | p.emitArrayType(node.AsArrayTypeNode()) |
| 2318 | case ast.KindTupleType: |
| 2319 | p.emitTupleType(node.AsTupleTypeNode()) |
| 2320 | case ast.KindOptionalType: |
| 2321 | p.emitOptionalType(node.AsOptionalTypeNode()) |
| 2322 | case ast.KindRestType: |
| 2323 | p.emitRestType(node.AsRestTypeNode()) |
| 2324 | case ast.KindUnionType: |
| 2325 | p.emitUnionType(node.AsUnionTypeNode()) |
| 2326 | case ast.KindIntersectionType: |
| 2327 | p.emitIntersectionType(node.AsIntersectionTypeNode()) |
| 2328 | case ast.KindConditionalType: |
| 2329 | p.emitConditionalType(node.AsConditionalTypeNode()) |
| 2330 | case ast.KindInferType: |
| 2331 | p.emitInferType(node.AsInferTypeNode()) |
no test coverage detected