@@ -27,7 +27,8 @@ func (s *Server) DocumentSymbol(_ context.Context, params *protocol.DocumentSymb
27
27
return nil , nil
28
28
}
29
29
30
- symbols := buildDocumentSymbols (doc .AST )
30
+ processor := processing .NewProcessor (s .cache , nil )
31
+ symbols := s .buildDocumentSymbols (processor , doc .AST )
31
32
32
33
result := make ([]interface {}, len (symbols ))
33
34
for i , symbol := range symbols {
@@ -37,13 +38,13 @@ func (s *Server) DocumentSymbol(_ context.Context, params *protocol.DocumentSymb
37
38
return result , nil
38
39
}
39
40
40
- func buildDocumentSymbols (node ast.Node ) []protocol.DocumentSymbol {
41
+ func ( s * Server ) buildDocumentSymbols (processor * processing. Processor , node ast.Node ) []protocol.DocumentSymbol {
41
42
var symbols []protocol.DocumentSymbol
42
43
43
44
switch node := node .(type ) {
44
45
case * ast.Binary :
45
- symbols = append (symbols , buildDocumentSymbols (node .Left )... )
46
- symbols = append (symbols , buildDocumentSymbols (node .Right )... )
46
+ symbols = append (symbols , s . buildDocumentSymbols (processor , node .Left )... )
47
+ symbols = append (symbols , s . buildDocumentSymbols (processor , node .Right )... )
47
48
case * ast.Local :
48
49
for _ , bind := range node .Binds {
49
50
objectRange := processing .LocalBindToRange (bind )
@@ -55,21 +56,21 @@ func buildDocumentSymbols(node ast.Node) []protocol.DocumentSymbol {
55
56
Detail : symbolDetails (bind .Body ),
56
57
})
57
58
}
58
- symbols = append (symbols , buildDocumentSymbols (node .Body )... )
59
+ symbols = append (symbols , s . buildDocumentSymbols (processor , node .Body )... )
59
60
case * ast.DesugaredObject :
60
61
for _ , field := range node .Fields {
61
62
kind := protocol .Field
62
63
if field .Hide == ast .ObjectFieldHidden {
63
64
kind = protocol .Property
64
65
}
65
- fieldRange := processing .FieldToRange (field )
66
+ fieldRange := processor .FieldToRange (field )
66
67
symbols = append (symbols , protocol.DocumentSymbol {
67
- Name : processing .FieldNameToString (field .Name ),
68
+ Name : processor .FieldNameToString (field .Name ),
68
69
Kind : kind ,
69
70
Range : position .RangeASTToProtocol (fieldRange .FullRange ),
70
71
SelectionRange : position .RangeASTToProtocol (fieldRange .SelectionRange ),
71
72
Detail : symbolDetails (field .Body ),
72
- Children : buildDocumentSymbols (field .Body ),
73
+ Children : s . buildDocumentSymbols (processor , field .Body ),
73
74
})
74
75
}
75
76
}
0 commit comments