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

Method handleGetReferencedSymbolsForNode

internal/api/session.go:3249–3300  ·  view source on GitHub ↗

handleGetReferencedSymbolsForNode returns node handles for all references found at a node.

(ctx context.Context, params *GetReferencedSymbolsForNodeParams)

Source from the content-addressed store, hash-verified

3247
3248// handleGetReferencedSymbolsForNode returns node handles for all references found at a node.
3249func (s *Session) handleGetReferencedSymbolsForNode(ctx context.Context, params *GetReferencedSymbolsForNodeParams) ([]ReferencedSymbolEntry, error) {
3250 sd, err := s.getSnapshotData(params.Snapshot)
3251 if err != nil {
3252 return nil, err
3253 }
3254 program, err := sd.getProgram(params.Project)
3255 if err != nil {
3256 return nil, err
3257 }
3258
3259 node, err := sd.resolveNodeHandle(program, params.Node)
3260 if err != nil {
3261 return nil, err
3262 }
3263 if node == nil {
3264 return nil, nil
3265 }
3266
3267 langSvc, err := s.setupLanguageService(sd, program, params.Project, "")
3268 if err != nil {
3269 return nil, err
3270 }
3271
3272 sourceFiles := program.GetSourceFiles()
3273 entries := langSvc.GetReferencedSymbolsForNode(ctx, params.Position, node, sourceFiles)
3274 if entries == nil {
3275 return nil, nil
3276 }
3277
3278 var result []ReferencedSymbolEntry
3279 for _, entry := range entries {
3280 defNode := entry.DefinitionNode()
3281 if defNode == nil {
3282 continue
3283 }
3284 var refs []NodeHandle
3285 for _, ref := range entry.References() {
3286 if ref.IsNodeEntry() {
3287 refs = append(refs, sd.nodeHandleFrom(ref.Node()))
3288 }
3289 }
3290 re := ReferencedSymbolEntry{
3291 Definition: sd.nodeHandleFrom(defNode),
3292 References: refs,
3293 }
3294 if sym := entry.DefinitionSymbol(); sym != nil {
3295 re.Symbol = sd.newSymbolResponse(sym, params.Project)
3296 }
3297 result = append(result, re)
3298 }
3299 return result, nil
3300}

Callers 1

HandleRequestMethod · 0.95

Calls 14

getSnapshotDataMethod · 0.95
setupLanguageServiceMethod · 0.95
resolveNodeHandleMethod · 0.80
DefinitionNodeMethod · 0.80
ReferencesMethod · 0.80
IsNodeEntryMethod · 0.80
nodeHandleFromMethod · 0.80
NodeMethod · 0.80
DefinitionSymbolMethod · 0.80
getProgramMethod · 0.65
GetSourceFilesMethod · 0.65

Tested by

no test coverage detected