( typeNode *ast.TypeNode, target core.ScriptTarget, quotePreference lsutil.QuotePreference, factory *ast.NodeFactory, )
| 6079 | } |
| 6080 | |
| 6081 | func typeNodeToExpression( |
| 6082 | typeNode *ast.TypeNode, |
| 6083 | target core.ScriptTarget, |
| 6084 | quotePreference lsutil.QuotePreference, |
| 6085 | factory *ast.NodeFactory, |
| 6086 | ) *ast.Expression { |
| 6087 | switch typeNode.Kind { |
| 6088 | case ast.KindTypeReference: |
| 6089 | typeName := typeNode.AsTypeReferenceNode().TypeName |
| 6090 | return entityNameToExpression(typeName, target, quotePreference, factory) |
| 6091 | case ast.KindIndexedAccessType: |
| 6092 | objectExpression := typeNodeToExpression( |
| 6093 | typeNode.AsIndexedAccessTypeNode().ObjectType, |
| 6094 | target, |
| 6095 | quotePreference, |
| 6096 | factory, |
| 6097 | ) |
| 6098 | indexExpression := typeNodeToExpression( |
| 6099 | typeNode.AsIndexedAccessTypeNode().IndexType, |
| 6100 | target, |
| 6101 | quotePreference, |
| 6102 | factory, |
| 6103 | ) |
| 6104 | if objectExpression != nil && indexExpression != nil { |
| 6105 | return factory.NewElementAccessExpression(objectExpression, nil /*questionDotToken*/, indexExpression, ast.NodeFlagsNone) |
| 6106 | } |
| 6107 | return nil |
| 6108 | case ast.KindLiteralType: |
| 6109 | literal := typeNode.AsLiteralTypeNode().Literal |
| 6110 | switch literal.Kind { |
| 6111 | case ast.KindStringLiteral: |
| 6112 | expr := factory.NewStringLiteral(literal.Text(), core.IfElse(quotePreference == lsutil.QuotePreferenceSingle, ast.TokenFlagsSingleQuote, ast.TokenFlagsNone)) |
| 6113 | return expr |
| 6114 | case ast.KindNumericLiteral: |
| 6115 | expr := factory.NewNumericLiteral(literal.Text(), literal.AsNumericLiteral().TokenFlags) |
| 6116 | return expr |
| 6117 | default: |
| 6118 | return nil |
| 6119 | } |
| 6120 | case ast.KindParenthesizedType: |
| 6121 | expr := typeNodeToExpression( |
| 6122 | typeNode.AsParenthesizedTypeNode().Type, |
| 6123 | target, |
| 6124 | quotePreference, |
| 6125 | factory, |
| 6126 | ) |
| 6127 | if expr == nil { |
| 6128 | return nil |
| 6129 | } |
| 6130 | if ast.IsIdentifier(expr) { |
| 6131 | return expr |
| 6132 | } |
| 6133 | return factory.NewParenthesizedExpression(expr) |
| 6134 | case ast.KindTypeQuery: |
| 6135 | return entityNameToExpression(typeNode.AsTypeQueryNode().ExprName, target, quotePreference, factory) |
| 6136 | case ast.KindImportType: |
| 6137 | debug.Fail(`We should not get an import type after calling 'typeToAutoImportableTypeNode'.`) |
| 6138 | return nil |
no test coverage detected