mirror of
https://github.com/google/go-jsonnet.git
synced 2025-09-29 09:21:03 +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:
|
||||
return objectFieldsDirectChildren(node.Fields)
|
||||
case *ast.DesugaredObject:
|
||||
return desugaredObjectFieldsDirectChildren(node.Fields)
|
||||
return desugaredObjectDirectChildren(node)
|
||||
case *ast.ArrayComp:
|
||||
result := []ast.Node{}
|
||||
spec := &node.Spec
|
||||
@ -247,23 +247,29 @@ func inObjectFieldsChildren(fields ast.ObjectFields) ast.Nodes {
|
||||
return result
|
||||
}
|
||||
|
||||
func desugaredObjectFieldsDirectChildren(fields ast.DesugaredObjectFields) ast.Nodes {
|
||||
func desugaredObjectDirectChildren(obj *ast.DesugaredObject) 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)
|
||||
}
|
||||
return result
|
||||
}
|
||||
|
||||
func inDesugaredObjectFieldsChildren(fields ast.DesugaredObjectFields) ast.Nodes {
|
||||
result := ast.Nodes{}
|
||||
for _, field := range fields {
|
||||
func inDesugaredObjectSpecialChildren(obj *ast.DesugaredObject) ast.Nodes {
|
||||
result := make([]ast.Node, 0, len(obj.Fields)+len(obj.Locals))
|
||||
for _, field := range obj.Fields {
|
||||
result = append(result, field.Body)
|
||||
}
|
||||
for _, local := range obj.Locals {
|
||||
result = append(result, local.Body)
|
||||
}
|
||||
return result
|
||||
}
|
||||
|
||||
// specialChildren returns children are neither direct nor thunked,
|
||||
// specialChildren returns children that are neither direct nor thunked,
|
||||
// e.g. object field body.
|
||||
// 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:
|
||||
return nil
|
||||
case *ast.Function:
|
||||
// TODO(sbarzowski) this
|
||||
return nil
|
||||
children := []ast.Node{node.Body}
|
||||
for _, child := range node.Parameters.Optional {
|
||||
children = append(children, child.DefaultArg)
|
||||
}
|
||||
return children
|
||||
case *ast.Import:
|
||||
return nil
|
||||
case *ast.ImportStr:
|
||||
@ -313,7 +322,7 @@ func specialChildren(node ast.Node) []ast.Node {
|
||||
case *ast.LiteralString:
|
||||
return nil
|
||||
case *ast.DesugaredObject:
|
||||
return inDesugaredObjectFieldsChildren(node.Fields)
|
||||
return inDesugaredObjectSpecialChildren(node)
|
||||
case *ast.Object:
|
||||
return inObjectFieldsChildren(node.Fields)
|
||||
case *ast.ArrayComp:
|
||||
|
Loading…
x
Reference in New Issue
Block a user