MCPcopy Create free account
hub / github.com/microsoft/typescript-go / handleGetTypesAtPositions

Method handleGetTypesAtPositions

internal/api/session.go:1458–1484  ·  view source on GitHub ↗

handleGetTypesAtPositions returns types at multiple positions in a file.

(ctx context.Context, params *GetTypesAtPositionsParams)

Source from the content-addressed store, hash-verified

1456
1457// handleGetTypesAtPositions returns types at multiple positions in a file.
1458func (s *Session) handleGetTypesAtPositions(ctx context.Context, params *GetTypesAtPositionsParams) ([]*TypeResponse, error) {
1459 setup, err := s.setupChecker(ctx, params.Snapshot, params.Project)
1460 if err != nil {
1461 return nil, err
1462 }
1463 defer setup.done()
1464
1465 sourceFile := setup.program.GetSourceFile(params.File.ToFileName())
1466 if sourceFile == nil {
1467 return nil, fmt.Errorf("%w: source file not found: %v", ErrClientError, params.File)
1468 }
1469
1470 positionMap := sourceFile.GetPositionMap()
1471 results := make([]*TypeResponse, len(params.Positions))
1472 for i, pos := range params.Positions {
1473 node := astnav.GetTouchingPropertyName(sourceFile, positionMap.UTF16ToUTF8(int(pos)))
1474 if node == nil {
1475 continue
1476 }
1477 t := setup.checker.GetTypeAtLocation(node)
1478 if t != nil {
1479 results[i] = setup.newTypeResponse(t)
1480 }
1481 }
1482
1483 return results, nil
1484}
1485
1486func (s *Session) handleGetParentOfSymbol(_ context.Context, params *GetSymbolPropertyParams) (*SymbolResponse, error) {
1487 return s.resolveSymbolPropertyOfSymbol(params, func(sym *ast.Symbol) *ast.Symbol { return sym.Parent })

Callers 1

HandleRequestMethod · 0.95

Calls 13

setupCheckerMethod · 0.95
GetTouchingPropertyNameFunction · 0.92
lenFunction · 0.85
ToFileNameMethod · 0.80
GetPositionMapMethod · 0.80
UTF16ToUTF8Method · 0.80
GetTypeAtLocationMethod · 0.80
doneMethod · 0.65
GetSourceFileMethod · 0.65
ErrorfMethod · 0.65
makeFunction · 0.50
intInterface · 0.50

Tested by

no test coverage detected