4
4
"errors"
5
5
6
6
"github.com/google/go-jsonnet/ast"
7
+ "github.com/google/go-jsonnet/toolutils"
7
8
"github.com/grafana/jsonnet-language-server/pkg/nodestack"
8
9
)
9
10
@@ -34,14 +35,8 @@ func FindNodeByPosition(node ast.Node, location ast.Location) (*nodestack.NodeSt
34
35
} else if curr .Loc ().End .IsSet () {
35
36
continue
36
37
}
38
+
37
39
switch curr := curr .(type ) {
38
- case * ast.Local :
39
- for _ , bind := range curr .Binds {
40
- stack .Push (bind .Body )
41
- }
42
- if curr .Body != nil {
43
- stack .Push (curr .Body )
44
- }
45
40
case * ast.DesugaredObject :
46
41
for _ , field := range curr .Fields {
47
42
body := field .Body
@@ -57,43 +52,13 @@ func FindNodeByPosition(node ast.Node, location ast.Location) (*nodestack.NodeSt
57
52
for _ , local := range curr .Locals {
58
53
stack .Push (local .Body )
59
54
}
60
- case * ast.Binary :
61
- stack .Push (curr .Left )
62
- stack .Push (curr .Right )
63
- case * ast.Array :
64
- for _ , element := range curr .Elements {
65
- stack .Push (element .Expr )
55
+ for _ , assert := range curr .Asserts {
56
+ stack .Push (assert )
66
57
}
67
- case * ast.Apply :
68
- for _ , posArg := range curr .Arguments .Positional {
69
- stack .Push (posArg .Expr )
70
- }
71
- for _ , namedArg := range curr .Arguments .Named {
72
- stack .Push (namedArg .Arg )
73
- }
74
- stack .Push (curr .Target )
75
- case * ast.Conditional :
76
- stack .Push (curr .Cond )
77
- stack .Push (curr .BranchTrue )
78
- stack .Push (curr .BranchFalse )
79
- case * ast.Error :
80
- stack .Push (curr .Expr )
81
- case * ast.Function :
82
- for _ , param := range curr .Parameters {
83
- if param .DefaultArg != nil {
84
- stack .Push (param .DefaultArg )
85
- }
58
+ default :
59
+ for _ , c := range toolutils .Children (curr ) {
60
+ stack .Push (c )
86
61
}
87
- stack .Push (curr .Body )
88
- case * ast.Index :
89
- stack .Push (curr .Target )
90
- stack .Push (curr .Index )
91
- case * ast.InSuper :
92
- stack .Push (curr .Index )
93
- case * ast.SuperIndex :
94
- stack .Push (curr .Index )
95
- case * ast.Unary :
96
- stack .Push (curr .Expr )
97
62
}
98
63
}
99
64
return searchStack .ReorderDesugaredObjects (), nil
0 commit comments