@@ -2,37 +2,67 @@ package graphql
2
2
3
3
import (
4
4
"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"
5
11
resolverstubs "github.com/sourcegraph/sourcegraph/internal/codeintel/resolvers"
12
+ "github.com/sourcegraph/sourcegraph/internal/types"
6
13
)
7
14
8
15
type usageConnectionResolver struct {
16
+ nodes []resolverstubs.UsageResolver
17
+ pageInfo resolverstubs.PageInfo
9
18
}
10
19
11
20
var _ resolverstubs.UsageConnectionResolver = & usageConnectionResolver {}
12
21
13
22
func (u * usageConnectionResolver ) Nodes (ctx context.Context ) ([]resolverstubs.UsageResolver , error ) {
14
- //TODO implement me
15
- panic ("implement me" )
23
+ return u .nodes , nil
16
24
}
17
25
18
26
func (u * usageConnectionResolver ) PageInfo () resolverstubs.PageInfo {
19
- //TODO implement me
20
- panic ("implement me" )
27
+ return u .pageInfo
21
28
}
22
29
23
30
type usageResolver struct {
31
+ symbol resolverstubs.SymbolInformationResolver
32
+ kind resolverstubs.SymbolUsageKind
33
+ usageRange resolverstubs.UsageRangeResolver
24
34
}
25
35
26
36
var _ resolverstubs.UsageResolver = & usageResolver {}
27
37
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
+
28
60
func (u * usageResolver ) Symbol (ctx context.Context ) (resolverstubs.SymbolInformationResolver , error ) {
29
- //TODO implement me
30
- panic ("implement me" )
61
+ return u .symbol , nil
31
62
}
32
63
33
64
func (u * usageResolver ) UsageRange (ctx context.Context ) (resolverstubs.UsageRangeResolver , error ) {
34
- //TODO implement me
35
- panic ("implement me" )
65
+ return u .usageRange , nil
36
66
}
37
67
38
68
func (u * usageResolver ) SurroundingContent (_ context.Context , args * struct {
@@ -43,17 +73,18 @@ func (u *usageResolver) SurroundingContent(_ context.Context, args *struct {
43
73
}
44
74
45
75
func (u * usageResolver ) UsageKind () resolverstubs.SymbolUsageKind {
46
- panic ( "implement me" )
76
+ return u . kind
47
77
}
48
78
49
79
type symbolInformationResolver struct {
80
+ name string
81
+ provenance resolverstubs.CodeGraphDataProvenance
50
82
}
51
83
52
84
var _ resolverstubs.SymbolInformationResolver = & symbolInformationResolver {}
53
85
54
86
func (s * symbolInformationResolver ) Name () (string , error ) {
55
- //TODO implement me
56
- panic ("implement me" )
87
+ return s .name , nil
57
88
}
58
89
59
90
func (s * symbolInformationResolver ) Documentation () (* []string , error ) {
@@ -62,35 +93,37 @@ func (s *symbolInformationResolver) Documentation() (*[]string, error) {
62
93
}
63
94
64
95
func (s * symbolInformationResolver ) Provenance () (resolverstubs.CodeGraphDataProvenance , error ) {
65
- //TODO implement me
66
- panic ("implement me" )
96
+ return s .provenance , nil
67
97
}
68
98
69
99
func (s * symbolInformationResolver ) DataSource () * string {
70
100
//TODO implement me
71
101
panic ("implement me" )
72
102
}
73
103
74
- type usageRangeResolver struct {}
104
+ type usageRangeResolver struct {
105
+ repository types.Repo
106
+ revision api.CommitID
107
+ path string
108
+ range_ scip.Range
109
+ }
75
110
76
111
var _ resolverstubs.UsageRangeResolver = & usageRangeResolver {}
77
112
78
113
func (u * usageRangeResolver ) Repository () string {
79
- //TODO implement me
80
- panic ("implement me" )
114
+ return string (u .repository .Name )
81
115
}
82
116
83
117
func (u * usageRangeResolver ) Revision () string {
84
- //TODO implement me
85
- panic ("implement me" )
118
+ return string (u .revision )
86
119
}
87
120
88
121
func (u * usageRangeResolver ) Path () string {
89
- //TODO implement me
90
- panic ("implement me" )
122
+ return u .path
91
123
}
92
124
93
125
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
+ }
96
129
}
0 commit comments