Skip to content
This repository was archived by the owner on Sep 30, 2024. It is now read-only.

Commit 221f398

Browse files
author
Christoph Hegemann
authored
Wraps up syntactic usages in resolvers (#63285)
Fixes https://linear.app/sourcegraph/issue/GRAPH-667/wrap-up-usage-results-in-graphql-resolvers This allows us to actually return syntactic usages from the occurrences API. It does not implement pagination yet, but I think _that_ PR will be nicer to review after this one landed. Requires #63268 ## Test plan Running queries against the site-admin api console
1 parent c1417b3 commit 221f398

File tree

2 files changed

+67
-22
lines changed

2 files changed

+67
-22
lines changed

internal/codeintel/codenav/transport/graphql/root_resolver.go

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -229,6 +229,18 @@ func (r *rootResolver) UsagesForSymbol(ctx context.Context, unresolvedArgs *reso
229229

230230
}
231231
}
232+
233+
usageResolvers := []resolverstubs.UsageResolver{}
234+
for _, result := range results {
235+
usageResolvers = append(usageResolvers, NewSyntacticUsageResolver(result, args.Repo, args.CommitID))
236+
}
237+
if len(usageResolvers) != 0 {
238+
return &usageConnectionResolver{
239+
nodes: usageResolvers,
240+
pageInfo: resolverstubs.NewSimplePageInfo(false),
241+
}, nil
242+
}
243+
232244
numSyntacticResults = len(results)
233245
remainingCount = remainingCount - numSyntacticResults
234246
}

internal/codeintel/codenav/transport/graphql/root_resolver_usages.go

Lines changed: 55 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -2,37 +2,67 @@ package graphql
22

33
import (
44
"context"
5+
6+
"github.com/sourcegraph/scip/bindings/go/scip"
7+
8+
"github.com/sourcegraph/sourcegraph/internal/api"
9+
"github.com/sourcegraph/sourcegraph/internal/codeintel/codenav"
10+
"github.com/sourcegraph/sourcegraph/internal/codeintel/codenav/shared"
511
resolverstubs "github.com/sourcegraph/sourcegraph/internal/codeintel/resolvers"
12+
"github.com/sourcegraph/sourcegraph/internal/types"
613
)
714

815
type usageConnectionResolver struct {
16+
nodes []resolverstubs.UsageResolver
17+
pageInfo resolverstubs.PageInfo
918
}
1019

1120
var _ resolverstubs.UsageConnectionResolver = &usageConnectionResolver{}
1221

1322
func (u *usageConnectionResolver) Nodes(ctx context.Context) ([]resolverstubs.UsageResolver, error) {
14-
//TODO implement me
15-
panic("implement me")
23+
return u.nodes, nil
1624
}
1725

1826
func (u *usageConnectionResolver) PageInfo() resolverstubs.PageInfo {
19-
//TODO implement me
20-
panic("implement me")
27+
return u.pageInfo
2128
}
2229

2330
type usageResolver struct {
31+
symbol resolverstubs.SymbolInformationResolver
32+
kind resolverstubs.SymbolUsageKind
33+
usageRange resolverstubs.UsageRangeResolver
2434
}
2535

2636
var _ resolverstubs.UsageResolver = &usageResolver{}
2737

38+
func NewSyntacticUsageResolver(usage codenav.SyntacticMatch, repository types.Repo, revision api.CommitID) resolverstubs.UsageResolver {
39+
var kind resolverstubs.SymbolUsageKind
40+
if scip.SymbolRole_Definition.Matches(usage.Occurrence) {
41+
kind = resolverstubs.UsageKindDefinition
42+
} else {
43+
kind = resolverstubs.UsageKindReference
44+
}
45+
return &usageResolver{
46+
symbol: &symbolInformationResolver{
47+
name: usage.Occurrence.Symbol,
48+
provenance: resolverstubs.ProvenanceSyntactic,
49+
},
50+
kind: kind,
51+
usageRange: &usageRangeResolver{
52+
repository: repository,
53+
revision: revision,
54+
path: usage.Path,
55+
range_: usage.Range(),
56+
},
57+
}
58+
}
59+
2860
func (u *usageResolver) Symbol(ctx context.Context) (resolverstubs.SymbolInformationResolver, error) {
29-
//TODO implement me
30-
panic("implement me")
61+
return u.symbol, nil
3162
}
3263

3364
func (u *usageResolver) UsageRange(ctx context.Context) (resolverstubs.UsageRangeResolver, error) {
34-
//TODO implement me
35-
panic("implement me")
65+
return u.usageRange, nil
3666
}
3767

3868
func (u *usageResolver) SurroundingContent(_ context.Context, args *struct {
@@ -43,17 +73,18 @@ func (u *usageResolver) SurroundingContent(_ context.Context, args *struct {
4373
}
4474

4575
func (u *usageResolver) UsageKind() resolverstubs.SymbolUsageKind {
46-
panic("implement me")
76+
return u.kind
4777
}
4878

4979
type symbolInformationResolver struct {
80+
name string
81+
provenance resolverstubs.CodeGraphDataProvenance
5082
}
5183

5284
var _ resolverstubs.SymbolInformationResolver = &symbolInformationResolver{}
5385

5486
func (s *symbolInformationResolver) Name() (string, error) {
55-
//TODO implement me
56-
panic("implement me")
87+
return s.name, nil
5788
}
5889

5990
func (s *symbolInformationResolver) Documentation() (*[]string, error) {
@@ -62,35 +93,37 @@ func (s *symbolInformationResolver) Documentation() (*[]string, error) {
6293
}
6394

6495
func (s *symbolInformationResolver) Provenance() (resolverstubs.CodeGraphDataProvenance, error) {
65-
//TODO implement me
66-
panic("implement me")
96+
return s.provenance, nil
6797
}
6898

6999
func (s *symbolInformationResolver) DataSource() *string {
70100
//TODO implement me
71101
panic("implement me")
72102
}
73103

74-
type usageRangeResolver struct{}
104+
type usageRangeResolver struct {
105+
repository types.Repo
106+
revision api.CommitID
107+
path string
108+
range_ scip.Range
109+
}
75110

76111
var _ resolverstubs.UsageRangeResolver = &usageRangeResolver{}
77112

78113
func (u *usageRangeResolver) Repository() string {
79-
//TODO implement me
80-
panic("implement me")
114+
return string(u.repository.Name)
81115
}
82116

83117
func (u *usageRangeResolver) Revision() string {
84-
//TODO implement me
85-
panic("implement me")
118+
return string(u.revision)
86119
}
87120

88121
func (u *usageRangeResolver) Path() string {
89-
//TODO implement me
90-
panic("implement me")
122+
return u.path
91123
}
92124

93125
func (u *usageRangeResolver) Range() resolverstubs.RangeResolver {
94-
//TODO implement me
95-
panic("implement me")
126+
return &rangeResolver{
127+
lspRange: convertRange(shared.TranslateRange(u.range_)),
128+
}
96129
}

0 commit comments

Comments
 (0)