handleTypeToTypeNode converts a Type to a TypeNode AST and returns it as binary-encoded data.
(ctx context.Context, params *TypeToTypeNodeParams)
| 2033 | |
| 2034 | // handleTypeToTypeNode converts a Type to a TypeNode AST and returns it as binary-encoded data. |
| 2035 | func (s *Session) handleTypeToTypeNode(ctx context.Context, params *TypeToTypeNodeParams) (any, error) { |
| 2036 | setup, err := s.setupChecker(ctx, params.Snapshot, params.Project) |
| 2037 | if err != nil { |
| 2038 | return nil, err |
| 2039 | } |
| 2040 | defer setup.done() |
| 2041 | |
| 2042 | t, err := setup.resolveTypeHandle(params.Type) |
| 2043 | if err != nil { |
| 2044 | return nil, err |
| 2045 | } |
| 2046 | |
| 2047 | var enclosingDeclaration *ast.Node |
| 2048 | if params.Location != "" { |
| 2049 | enclosingDeclaration, err = setup.sd.resolveNodeHandle(setup.program, params.Location) |
| 2050 | if err != nil { |
| 2051 | return nil, err |
| 2052 | } |
| 2053 | } |
| 2054 | |
| 2055 | typeNode := setup.checker.TypeToTypeNode(t, enclosingDeclaration, nodebuilder.Flags(params.Flags), nil) |
| 2056 | if typeNode == nil { |
| 2057 | return nil, nil |
| 2058 | } |
| 2059 | |
| 2060 | data, _, err := encoder.EncodeNode(typeNode.AsNode(), nil) |
| 2061 | if err != nil { |
| 2062 | return nil, fmt.Errorf("failed to encode type node: %w", err) |
| 2063 | } |
| 2064 | |
| 2065 | if s.useBinaryResponses { |
| 2066 | return RawBinary(data), nil |
| 2067 | } |
| 2068 | return &SourceFileResponse{ |
| 2069 | Data: base64.StdEncoding.EncodeToString(data), |
| 2070 | }, nil |
| 2071 | } |
| 2072 | |
| 2073 | func (s *Session) handleSignatureToSignatureDeclaration(ctx context.Context, params *SignatureToSignatureDeclarationParams) (any, error) { |
| 2074 | setup, err := s.setupChecker(ctx, params.Snapshot, params.Project) |
no test coverage detected