mirror of
https://github.com/google/go-jsonnet.git
synced 2025-09-29 17:31:02 +02:00
Add missing cases in specialChildren
Namely: 1) function body and optional params 2) object locals
This commit is contained in:
parent
85fd887750
commit
ab95594eea
@ -98,7 +98,7 @@ func directChildren(node ast.Node) []ast.Node {
|
|||||||
case *ast.Object:
|
case *ast.Object:
|
||||||
return objectFieldsDirectChildren(node.Fields)
|
return objectFieldsDirectChildren(node.Fields)
|
||||||
case *ast.DesugaredObject:
|
case *ast.DesugaredObject:
|
||||||
return desugaredObjectFieldsDirectChildren(node.Fields)
|
return desugaredObjectDirectChildren(node)
|
||||||
case *ast.ArrayComp:
|
case *ast.ArrayComp:
|
||||||
result := []ast.Node{}
|
result := []ast.Node{}
|
||||||
spec := &node.Spec
|
spec := &node.Spec
|
||||||
@ -247,23 +247,29 @@ func inObjectFieldsChildren(fields ast.ObjectFields) ast.Nodes {
|
|||||||
return result
|
return result
|
||||||
}
|
}
|
||||||
|
|
||||||
func desugaredObjectFieldsDirectChildren(fields ast.DesugaredObjectFields) ast.Nodes {
|
func desugaredObjectDirectChildren(obj *ast.DesugaredObject) ast.Nodes {
|
||||||
result := ast.Nodes{}
|
result := ast.Nodes{}
|
||||||
for _, field := range fields {
|
for _, field := range obj.Fields {
|
||||||
|
if field.Name == nil {
|
||||||
|
panic("Name cannot be nil")
|
||||||
|
}
|
||||||
result = append(result, field.Name)
|
result = append(result, field.Name)
|
||||||
}
|
}
|
||||||
return result
|
return result
|
||||||
}
|
}
|
||||||
|
|
||||||
func inDesugaredObjectFieldsChildren(fields ast.DesugaredObjectFields) ast.Nodes {
|
func inDesugaredObjectSpecialChildren(obj *ast.DesugaredObject) ast.Nodes {
|
||||||
result := ast.Nodes{}
|
result := make([]ast.Node, 0, len(obj.Fields)+len(obj.Locals))
|
||||||
for _, field := range fields {
|
for _, field := range obj.Fields {
|
||||||
result = append(result, field.Body)
|
result = append(result, field.Body)
|
||||||
}
|
}
|
||||||
|
for _, local := range obj.Locals {
|
||||||
|
result = append(result, local.Body)
|
||||||
|
}
|
||||||
return result
|
return result
|
||||||
}
|
}
|
||||||
|
|
||||||
// specialChildren returns children are neither direct nor thunked,
|
// specialChildren returns children that are neither direct nor thunked,
|
||||||
// e.g. object field body.
|
// e.g. object field body.
|
||||||
// These nodes are evaluated in a different environment from their parent.
|
// These nodes are evaluated in a different environment from their parent.
|
||||||
//
|
//
|
||||||
@ -287,8 +293,11 @@ func specialChildren(node ast.Node) []ast.Node {
|
|||||||
case *ast.Error:
|
case *ast.Error:
|
||||||
return nil
|
return nil
|
||||||
case *ast.Function:
|
case *ast.Function:
|
||||||
// TODO(sbarzowski) this
|
children := []ast.Node{node.Body}
|
||||||
return nil
|
for _, child := range node.Parameters.Optional {
|
||||||
|
children = append(children, child.DefaultArg)
|
||||||
|
}
|
||||||
|
return children
|
||||||
case *ast.Import:
|
case *ast.Import:
|
||||||
return nil
|
return nil
|
||||||
case *ast.ImportStr:
|
case *ast.ImportStr:
|
||||||
@ -313,7 +322,7 @@ func specialChildren(node ast.Node) []ast.Node {
|
|||||||
case *ast.LiteralString:
|
case *ast.LiteralString:
|
||||||
return nil
|
return nil
|
||||||
case *ast.DesugaredObject:
|
case *ast.DesugaredObject:
|
||||||
return inDesugaredObjectFieldsChildren(node.Fields)
|
return inDesugaredObjectSpecialChildren(node)
|
||||||
case *ast.Object:
|
case *ast.Object:
|
||||||
return inObjectFieldsChildren(node.Fields)
|
return inObjectFieldsChildren(node.Fields)
|
||||||
case *ast.ArrayComp:
|
case *ast.ArrayComp:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user