php-parser/pkg/ast/traverser/dfs.go

2572 lines
49 KiB
Go
Raw Normal View History

2020-03-12 22:20:48 +00:00
package traverser
import "github.com/z7zmey/php-parser/pkg/ast"
type DFS struct {
visitor ast.Visitor
}
func NewDFS(visitor ast.Visitor) *DFS {
return &DFS{
visitor: visitor,
}
}
func (t *DFS) Traverse(n ast.Vertex) {
switch nn := n.(type) {
case *ast.Root:
2020-05-13 18:05:15 +00:00
if nn == nil {
return
}
if !t.visitor.EnterNode(nn) {
return
}
if nn.Stmts != nil {
t.visitor.Enter("Stmts", false)
for _, c := range nn.Stmts {
t.Traverse(c)
}
t.visitor.Leave("Stmts", false)
}
2020-03-12 22:20:48 +00:00
case *ast.Nullable:
2020-05-13 18:05:15 +00:00
if nn == nil {
return
}
if !t.visitor.EnterNode(nn) {
return
}
if nn.Expr != nil {
t.visitor.Enter("Expr", true)
t.Traverse(nn.Expr)
t.visitor.Leave("Expr", true)
}
2020-03-12 22:20:48 +00:00
case *ast.Parameter:
2020-05-13 18:05:15 +00:00
if nn == nil {
return
}
if !t.visitor.EnterNode(nn) {
return
}
if nn.Type != nil {
t.visitor.Enter("Type", true)
t.Traverse(nn.Type)
t.visitor.Leave("Type", true)
}
if nn.Var != nil {
t.visitor.Enter("Var", true)
t.Traverse(nn.Var)
t.visitor.Leave("Var", true)
}
if nn.DefaultValue != nil {
t.visitor.Enter("DefaultValue", true)
t.Traverse(nn.DefaultValue)
t.visitor.Leave("DefaultValue", true)
}
2020-03-12 22:20:48 +00:00
case *ast.Identifier:
2020-05-13 18:05:15 +00:00
if nn == nil {
return
}
if !t.visitor.EnterNode(nn) {
return
}
2020-03-12 22:20:48 +00:00
case *ast.Argument:
2020-05-13 18:05:15 +00:00
if nn == nil {
return
}
if !t.visitor.EnterNode(nn) {
return
}
if nn.Expr != nil {
t.visitor.Enter("Expr", true)
t.Traverse(nn.Expr)
t.visitor.Leave("Expr", true)
}
2020-03-12 22:20:48 +00:00
case *ast.StmtBreak:
2020-05-13 18:05:15 +00:00
if nn == nil {
return
}
if !t.visitor.EnterNode(nn) {
return
}
if nn.Expr != nil {
t.visitor.Enter("Expr", true)
t.Traverse(nn.Expr)
t.visitor.Leave("Expr", true)
}
2020-03-12 22:20:48 +00:00
case *ast.StmtCase:
2020-05-13 18:05:15 +00:00
if nn == nil {
return
}
if !t.visitor.EnterNode(nn) {
return
}
if nn.Cond != nil {
t.visitor.Enter("Cond", true)
t.Traverse(nn.Cond)
t.visitor.Leave("Cond", true)
}
if nn.Stmts != nil {
t.visitor.Enter("Stmts", false)
for _, c := range nn.Stmts {
t.Traverse(c)
}
t.visitor.Leave("Stmts", false)
}
2020-03-12 22:20:48 +00:00
case *ast.StmtCatch:
2020-05-13 18:05:15 +00:00
if nn == nil {
return
}
if !t.visitor.EnterNode(nn) {
return
}
if nn.Types != nil {
t.visitor.Enter("Types", false)
for _, c := range nn.Types {
t.Traverse(c)
}
t.visitor.Leave("Types", false)
}
if nn.Var != nil {
t.visitor.Enter("Var", true)
t.Traverse(nn.Var)
t.visitor.Leave("Var", true)
}
if nn.Stmts != nil {
t.visitor.Enter("Stmts", false)
for _, c := range nn.Stmts {
t.Traverse(c)
}
t.visitor.Leave("Stmts", false)
}
2020-03-12 22:20:48 +00:00
case *ast.StmtClass:
2020-05-13 18:05:15 +00:00
if nn == nil {
return
}
if !t.visitor.EnterNode(nn) {
return
}
if nn.ClassName != nil {
t.visitor.Enter("ClassName", true)
t.Traverse(nn.ClassName)
t.visitor.Leave("ClassName", true)
}
if nn.Modifiers != nil {
t.visitor.Enter("Modifiers", false)
for _, c := range nn.Modifiers {
t.Traverse(c)
}
t.visitor.Leave("Modifiers", false)
}
if nn.Arguments != nil {
t.visitor.Enter("Arguments", false)
for _, c := range nn.Arguments {
t.Traverse(c)
}
t.visitor.Leave("Arguments", false)
2020-07-05 15:27:34 +00:00
}
if nn.Extends != nil {
t.visitor.Enter("Extends", true)
t.Traverse(nn.Extends)
t.visitor.Leave("Extends", true)
}
if nn.Implements != nil {
t.visitor.Enter("Implements", true)
t.Traverse(nn.Implements)
t.visitor.Leave("Implements", true)
}
2020-05-13 18:05:15 +00:00
if nn.Stmts != nil {
t.visitor.Enter("Stmts", false)
for _, c := range nn.Stmts {
t.Traverse(c)
}
t.visitor.Leave("Stmts", false)
}
2020-03-12 22:20:48 +00:00
case *ast.StmtClassConstList:
2020-05-13 18:05:15 +00:00
if nn == nil {
return
}
if !t.visitor.EnterNode(nn) {
return
}
if nn.Modifiers != nil {
t.visitor.Enter("Modifiers", false)
for _, c := range nn.Modifiers {
t.Traverse(c)
}
t.visitor.Leave("Modifiers", false)
}
if nn.Consts != nil {
t.visitor.Enter("Consts", false)
for _, c := range nn.Consts {
t.Traverse(c)
}
t.visitor.Leave("Consts", false)
}
2020-03-12 22:20:48 +00:00
case *ast.StmtClassExtends:
2020-05-13 18:05:15 +00:00
if nn == nil {
return
}
if !t.visitor.EnterNode(nn) {
return
}
if nn.ClassName != nil {
t.visitor.Enter("ClassName", true)
t.Traverse(nn.ClassName)
t.visitor.Leave("ClassName", true)
}
2020-03-12 22:20:48 +00:00
case *ast.StmtClassImplements:
2020-05-13 18:05:15 +00:00
if nn == nil {
return
}
if !t.visitor.EnterNode(nn) {
return
}
if nn.InterfaceNames != nil {
t.visitor.Enter("InterfaceNames", false)
for _, c := range nn.InterfaceNames {
t.Traverse(c)
}
t.visitor.Leave("InterfaceNames", false)
}
2020-03-12 22:20:48 +00:00
case *ast.StmtClassMethod:
2020-05-13 18:05:15 +00:00
if nn == nil {
return
}
if !t.visitor.EnterNode(nn) {
return
}
if nn.MethodName != nil {
t.visitor.Enter("MethodName", true)
t.Traverse(nn.MethodName)
t.visitor.Leave("MethodName", true)
}
if nn.Modifiers != nil {
t.visitor.Enter("Modifiers", false)
for _, c := range nn.Modifiers {
t.Traverse(c)
}
t.visitor.Leave("Modifiers", false)
}
if nn.Params != nil {
t.visitor.Enter("Params", false)
for _, c := range nn.Params {
t.Traverse(c)
}
t.visitor.Leave("Params", false)
}
if nn.ReturnType != nil {
t.visitor.Enter("ReturnType", true)
t.Traverse(nn.ReturnType)
t.visitor.Leave("ReturnType", true)
}
if nn.Stmt != nil {
t.visitor.Enter("Stmt", true)
t.Traverse(nn.Stmt)
t.visitor.Leave("Stmt", true)
}
2020-03-12 22:20:48 +00:00
case *ast.StmtConstList:
2020-05-13 18:05:15 +00:00
if nn == nil {
return
}
if !t.visitor.EnterNode(nn) {
return
}
if nn.Consts != nil {
t.visitor.Enter("Consts", false)
for _, c := range nn.Consts {
t.Traverse(c)
}
t.visitor.Leave("Consts", false)
}
2020-03-12 22:20:48 +00:00
case *ast.StmtConstant:
2020-05-13 18:05:15 +00:00
if nn == nil {
return
}
if !t.visitor.EnterNode(nn) {
return
}
if nn.Name != nil {
t.visitor.Enter("Name", true)
t.Traverse(nn.Name)
t.visitor.Leave("Name", true)
2020-05-13 18:05:15 +00:00
}
if nn.Expr != nil {
t.visitor.Enter("Expr", true)
t.Traverse(nn.Expr)
t.visitor.Leave("Expr", true)
}
2020-03-12 22:20:48 +00:00
case *ast.StmtContinue:
2020-05-13 18:05:15 +00:00
if nn == nil {
return
}
if !t.visitor.EnterNode(nn) {
return
}
if nn.Expr != nil {
t.visitor.Enter("Expr", true)
t.Traverse(nn.Expr)
t.visitor.Leave("Expr", true)
}
2020-03-12 22:20:48 +00:00
case *ast.StmtDeclare:
2020-05-13 18:05:15 +00:00
if nn == nil {
return
}
if !t.visitor.EnterNode(nn) {
return
}
if nn.Consts != nil {
t.visitor.Enter("Consts", false)
for _, c := range nn.Consts {
t.Traverse(c)
}
t.visitor.Leave("Consts", false)
}
if nn.Stmt != nil {
t.visitor.Enter("Stmt", true)
t.Traverse(nn.Stmt)
t.visitor.Leave("Stmt", true)
}
2020-03-12 22:20:48 +00:00
case *ast.StmtDefault:
2020-05-13 18:05:15 +00:00
if nn == nil {
return
}
if !t.visitor.EnterNode(nn) {
return
}
if nn.Stmts != nil {
t.visitor.Enter("Stmts", false)
for _, c := range nn.Stmts {
t.Traverse(c)
}
t.visitor.Leave("Stmts", false)
}
2020-03-12 22:20:48 +00:00
case *ast.StmtDo:
2020-05-13 18:05:15 +00:00
if nn == nil {
return
}
if !t.visitor.EnterNode(nn) {
return
}
if nn.Stmt != nil {
t.visitor.Enter("Stmt", true)
t.Traverse(nn.Stmt)
t.visitor.Leave("Stmt", true)
}
if nn.Cond != nil {
t.visitor.Enter("Cond", true)
t.Traverse(nn.Cond)
t.visitor.Leave("Cond", true)
}
2020-03-12 22:20:48 +00:00
case *ast.StmtEcho:
2020-05-13 18:05:15 +00:00
if nn == nil {
return
}
if !t.visitor.EnterNode(nn) {
return
}
if nn.Exprs != nil {
t.visitor.Enter("Exprs", false)
for _, c := range nn.Exprs {
t.Traverse(c)
}
t.visitor.Leave("Exprs", false)
}
2020-03-12 22:20:48 +00:00
case *ast.StmtElse:
2020-05-13 18:05:15 +00:00
if nn == nil {
return
}
if !t.visitor.EnterNode(nn) {
return
}
if nn.Stmt != nil {
t.visitor.Enter("Stmt", true)
t.Traverse(nn.Stmt)
t.visitor.Leave("Stmt", true)
}
2020-03-12 22:20:48 +00:00
case *ast.StmtElseIf:
2020-05-13 18:05:15 +00:00
if nn == nil {
return
}
if !t.visitor.EnterNode(nn) {
return
}
if nn.Cond != nil {
t.visitor.Enter("Cond", true)
t.Traverse(nn.Cond)
t.visitor.Leave("Cond", true)
}
if nn.Stmt != nil {
t.visitor.Enter("Stmt", true)
t.Traverse(nn.Stmt)
t.visitor.Leave("Stmt", true)
}
2020-03-12 22:20:48 +00:00
case *ast.StmtExpression:
2020-05-13 18:05:15 +00:00
if nn == nil {
return
}
if !t.visitor.EnterNode(nn) {
return
}
if nn.Expr != nil {
t.visitor.Enter("Expr", true)
t.Traverse(nn.Expr)
t.visitor.Leave("Expr", true)
}
2020-03-12 22:20:48 +00:00
case *ast.StmtFinally:
2020-05-13 18:05:15 +00:00
if nn == nil {
return
}
if !t.visitor.EnterNode(nn) {
return
}
if nn.Stmts != nil {
t.visitor.Enter("Stmts", false)
for _, c := range nn.Stmts {
t.Traverse(c)
}
t.visitor.Leave("Stmts", false)
}
2020-03-12 22:20:48 +00:00
case *ast.StmtFor:
2020-05-13 18:05:15 +00:00
if nn == nil {
return
}
if !t.visitor.EnterNode(nn) {
return
}
if nn.Init != nil {
t.visitor.Enter("Init", false)
for _, c := range nn.Init {
t.Traverse(c)
}
t.visitor.Leave("Init", false)
}
if nn.Cond != nil {
t.visitor.Enter("Cond", false)
for _, c := range nn.Cond {
t.Traverse(c)
}
t.visitor.Leave("Cond", false)
}
if nn.Loop != nil {
t.visitor.Enter("Loop", false)
for _, c := range nn.Loop {
t.Traverse(c)
}
t.visitor.Leave("Loop", false)
}
if nn.Stmt != nil {
t.visitor.Enter("Stmt", true)
t.Traverse(nn.Stmt)
t.visitor.Leave("Stmt", true)
}
2020-03-12 22:20:48 +00:00
case *ast.StmtForeach:
2020-05-13 18:05:15 +00:00
if nn == nil {
return
}
if !t.visitor.EnterNode(nn) {
return
}
if nn.Expr != nil {
t.visitor.Enter("Expr", true)
t.Traverse(nn.Expr)
t.visitor.Leave("Expr", true)
}
if nn.Key != nil {
t.visitor.Enter("Key", true)
t.Traverse(nn.Key)
t.visitor.Leave("Key", true)
}
if nn.Var != nil {
t.visitor.Enter("Var", true)
t.Traverse(nn.Var)
t.visitor.Leave("Var", true)
}
if nn.Stmt != nil {
t.visitor.Enter("Stmt", true)
t.Traverse(nn.Stmt)
t.visitor.Leave("Stmt", true)
}
2020-03-12 22:20:48 +00:00
case *ast.StmtFunction:
2020-05-13 18:05:15 +00:00
if nn == nil {
return
}
if !t.visitor.EnterNode(nn) {
return
}
if nn.FunctionName != nil {
t.visitor.Enter("FunctionName", true)
t.Traverse(nn.FunctionName)
t.visitor.Leave("FunctionName", true)
}
if nn.Params != nil {
t.visitor.Enter("Params", false)
for _, c := range nn.Params {
t.Traverse(c)
}
t.visitor.Leave("Params", false)
}
if nn.ReturnType != nil {
t.visitor.Enter("ReturnType", true)
t.Traverse(nn.ReturnType)
t.visitor.Leave("ReturnType", true)
}
if nn.Stmts != nil {
t.visitor.Enter("Stmts", false)
for _, c := range nn.Stmts {
t.Traverse(c)
}
t.visitor.Leave("Stmts", false)
}
2020-03-12 22:20:48 +00:00
case *ast.StmtGlobal:
2020-05-13 18:05:15 +00:00
if nn == nil {
return
}
if !t.visitor.EnterNode(nn) {
return
}
if nn.Vars != nil {
t.visitor.Enter("Vars", false)
for _, c := range nn.Vars {
t.Traverse(c)
}
t.visitor.Leave("Vars", false)
}
2020-03-12 22:20:48 +00:00
case *ast.StmtGoto:
2020-05-13 18:05:15 +00:00
if nn == nil {
return
}
if !t.visitor.EnterNode(nn) {
return
}
if nn.Label != nil {
t.visitor.Enter("Label", true)
t.Traverse(nn.Label)
t.visitor.Leave("Label", true)
}
2020-03-12 22:20:48 +00:00
case *ast.StmtHaltCompiler:
2020-05-13 18:05:15 +00:00
if nn == nil {
return
}
if !t.visitor.EnterNode(nn) {
return
}
2020-03-12 22:20:48 +00:00
case *ast.StmtIf:
2020-05-17 20:13:14 +00:00
if nn == nil {
return
}
if !t.visitor.EnterNode(nn) {
return
}
2020-05-13 18:05:15 +00:00
if nn.Cond != nil {
t.visitor.Enter("Cond", true)
t.Traverse(nn.Cond)
t.visitor.Leave("Cond", true)
}
if nn.Stmt != nil {
t.visitor.Enter("Stmt", true)
t.Traverse(nn.Stmt)
t.visitor.Leave("Stmt", true)
}
if nn.ElseIf != nil {
t.visitor.Enter("ElseIf", false)
for _, c := range nn.ElseIf {
t.Traverse(c)
}
t.visitor.Leave("ElseIf", false)
}
if nn.Else != nil {
t.visitor.Enter("Else", true)
t.Traverse(nn.Else)
t.visitor.Leave("Else", true)
}
2020-03-12 22:20:48 +00:00
case *ast.StmtInlineHtml:
2020-05-13 18:05:15 +00:00
if nn == nil {
return
}
if !t.visitor.EnterNode(nn) {
return
}
2020-03-12 22:20:48 +00:00
case *ast.StmtInterface:
2020-05-13 18:05:15 +00:00
if nn == nil {
return
}
if !t.visitor.EnterNode(nn) {
return
}
if nn.InterfaceName != nil {
t.visitor.Enter("InterfaceName", true)
t.Traverse(nn.InterfaceName)
t.visitor.Leave("InterfaceName", true)
}
2020-07-05 15:27:34 +00:00
if nn.Extends != nil {
t.visitor.Enter("Extends", true)
t.Traverse(nn.Extends)
t.visitor.Leave("Extends", true)
}
2020-05-13 18:05:15 +00:00
if nn.Stmts != nil {
t.visitor.Enter("Stmts", false)
for _, c := range nn.Stmts {
t.Traverse(c)
}
t.visitor.Leave("Stmts", false)
}
2020-03-12 22:20:48 +00:00
case *ast.StmtInterfaceExtends:
2020-05-13 18:05:15 +00:00
if nn == nil {
return
}
if !t.visitor.EnterNode(nn) {
return
}
if nn.InterfaceNames != nil {
t.visitor.Enter("InterfaceNames", false)
for _, c := range nn.InterfaceNames {
t.Traverse(c)
}
t.visitor.Leave("InterfaceNames", false)
}
2020-03-12 22:20:48 +00:00
case *ast.StmtLabel:
2020-05-13 18:05:15 +00:00
if nn == nil {
return
}
if !t.visitor.EnterNode(nn) {
return
}
if nn.LabelName != nil {
t.visitor.Enter("LabelName", true)
t.Traverse(nn.LabelName)
t.visitor.Leave("LabelName", true)
}
2020-03-12 22:20:48 +00:00
case *ast.StmtNamespace:
2020-05-13 18:05:15 +00:00
if nn == nil {
return
}
if !t.visitor.EnterNode(nn) {
return
}
if nn.Name != nil {
t.visitor.Enter("Name", true)
t.Traverse(nn.Name)
t.visitor.Leave("Name", true)
2020-05-13 18:05:15 +00:00
}
if nn.Stmts != nil {
t.visitor.Enter("Stmts", false)
for _, c := range nn.Stmts {
t.Traverse(c)
}
t.visitor.Leave("Stmts", false)
}
2020-03-12 22:20:48 +00:00
case *ast.StmtNop:
2020-05-13 18:05:15 +00:00
if nn == nil {
return
}
if !t.visitor.EnterNode(nn) {
return
}
2020-03-12 22:20:48 +00:00
case *ast.StmtProperty:
2020-07-05 15:27:34 +00:00
if nn == nil {
return
}
if !t.visitor.EnterNode(nn) {
return
}
2020-05-13 18:05:15 +00:00
if nn.Var != nil {
t.visitor.Enter("Var", true)
t.Traverse(nn.Var)
t.visitor.Leave("Var", true)
}
if nn.Expr != nil {
t.visitor.Enter("Expr", true)
t.Traverse(nn.Expr)
t.visitor.Leave("Expr", true)
}
2020-03-12 22:20:48 +00:00
case *ast.StmtPropertyList:
2020-05-13 18:05:15 +00:00
if nn == nil {
return
}
if !t.visitor.EnterNode(nn) {
return
}
if nn.Modifiers != nil {
t.visitor.Enter("Modifiers", false)
for _, c := range nn.Modifiers {
t.Traverse(c)
}
t.visitor.Leave("Modifiers", false)
}
if nn.Type != nil {
t.visitor.Enter("Type", true)
t.Traverse(nn.Type)
t.visitor.Leave("Type", true)
}
if nn.Properties != nil {
t.visitor.Enter("Properties", false)
for _, c := range nn.Properties {
t.Traverse(c)
}
t.visitor.Leave("Properties", false)
}
2020-03-12 22:20:48 +00:00
case *ast.StmtReturn:
2020-05-13 18:05:15 +00:00
if nn == nil {
return
}
if !t.visitor.EnterNode(nn) {
return
}
if nn.Expr != nil {
t.visitor.Enter("Expr", true)
t.Traverse(nn.Expr)
t.visitor.Leave("Expr", true)
}
2020-03-12 22:20:48 +00:00
case *ast.StmtStatic:
2020-05-13 18:05:15 +00:00
if nn == nil {
return
}
if !t.visitor.EnterNode(nn) {
return
}
if nn.Vars != nil {
t.visitor.Enter("Vars", false)
for _, c := range nn.Vars {
t.Traverse(c)
}
t.visitor.Leave("Vars", false)
}
2020-03-12 22:20:48 +00:00
case *ast.StmtStaticVar:
2020-05-13 18:05:15 +00:00
if nn == nil {
return
}
if !t.visitor.EnterNode(nn) {
return
}
if nn.Var != nil {
t.visitor.Enter("Var", true)
t.Traverse(nn.Var)
t.visitor.Leave("Var", true)
}
if nn.Expr != nil {
t.visitor.Enter("Expr", true)
t.Traverse(nn.Expr)
t.visitor.Leave("Expr", true)
}
2020-03-12 22:20:48 +00:00
case *ast.StmtStmtList:
2020-05-13 18:05:15 +00:00
if nn == nil {
return
}
if !t.visitor.EnterNode(nn) {
return
}
if nn.Stmts != nil {
t.visitor.Enter("Stmts", false)
for _, c := range nn.Stmts {
t.Traverse(c)
}
t.visitor.Leave("Stmts", false)
}
2020-03-12 22:20:48 +00:00
case *ast.StmtSwitch:
2020-05-13 18:05:15 +00:00
if nn == nil {
return
}
if !t.visitor.EnterNode(nn) {
return
}
if nn.Cond != nil {
t.visitor.Enter("Cond", true)
t.Traverse(nn.Cond)
t.visitor.Leave("Cond", true)
}
2020-07-05 15:27:34 +00:00
if nn.CaseList != nil {
t.visitor.Enter("CaseList", false)
for _, c := range nn.CaseList {
t.Traverse(c)
}
t.visitor.Leave("CaseList", false)
2020-07-05 15:27:34 +00:00
}
2020-03-12 22:20:48 +00:00
case *ast.StmtThrow:
2020-05-13 18:05:15 +00:00
if nn == nil {
return
}
if !t.visitor.EnterNode(nn) {
return
}
if nn.Expr != nil {
t.visitor.Enter("Expr", true)
t.Traverse(nn.Expr)
t.visitor.Leave("Expr", true)
}
2020-03-12 22:20:48 +00:00
case *ast.StmtTrait:
2020-05-13 18:05:15 +00:00
if nn == nil {
return
}
if !t.visitor.EnterNode(nn) {
return
}
if nn.TraitName != nil {
t.visitor.Enter("TraitName", true)
t.Traverse(nn.TraitName)
t.visitor.Leave("TraitName", true)
}
if nn.Stmts != nil {
t.visitor.Enter("Stmts", false)
for _, c := range nn.Stmts {
t.Traverse(c)
}
t.visitor.Leave("Stmts", false)
}
2020-03-12 22:20:48 +00:00
case *ast.StmtTraitAdaptationList:
2020-05-13 18:05:15 +00:00
if nn == nil {
return
}
if !t.visitor.EnterNode(nn) {
return
}
if nn.Adaptations != nil {
t.visitor.Enter("Adaptations", false)
for _, c := range nn.Adaptations {
t.Traverse(c)
}
t.visitor.Leave("Adaptations", false)
}
2020-03-12 22:20:48 +00:00
case *ast.StmtTraitMethodRef:
2020-05-13 18:05:15 +00:00
if nn == nil {
return
}
if !t.visitor.EnterNode(nn) {
return
}
if nn.Trait != nil {
t.visitor.Enter("Trait", true)
t.Traverse(nn.Trait)
t.visitor.Leave("Trait", true)
}
if nn.Method != nil {
t.visitor.Enter("Method", true)
t.Traverse(nn.Method)
t.visitor.Leave("Method", true)
}
2020-03-12 22:20:48 +00:00
case *ast.StmtTraitUse:
2020-05-13 18:05:15 +00:00
if nn == nil {
return
}
if !t.visitor.EnterNode(nn) {
return
}
if nn.Traits != nil {
t.visitor.Enter("Traits", false)
for _, c := range nn.Traits {
t.Traverse(c)
}
t.visitor.Leave("Traits", false)
}
if nn.Adaptations != nil {
t.visitor.Enter("Adaptations", true)
t.Traverse(nn.Adaptations)
t.visitor.Leave("Adaptations", true)
2020-05-13 18:05:15 +00:00
}
2020-03-12 22:20:48 +00:00
case *ast.StmtTraitUseAlias:
2020-05-13 18:05:15 +00:00
if nn == nil {
return
}
if !t.visitor.EnterNode(nn) {
return
}
if nn.Ref != nil {
t.visitor.Enter("Ref", true)
t.Traverse(nn.Ref)
t.visitor.Leave("Ref", true)
}
if nn.Modifier != nil {
t.visitor.Enter("Modifier", true)
t.Traverse(nn.Modifier)
t.visitor.Leave("Modifier", true)
}
if nn.Alias != nil {
t.visitor.Enter("Alias", true)
t.Traverse(nn.Alias)
t.visitor.Leave("Alias", true)
}
2020-03-12 22:20:48 +00:00
case *ast.StmtTraitUsePrecedence:
2020-05-13 18:05:15 +00:00
if nn == nil {
return
}
if !t.visitor.EnterNode(nn) {
return
}
if nn.Ref != nil {
t.visitor.Enter("Ref", true)
t.Traverse(nn.Ref)
t.visitor.Leave("Ref", true)
}
if nn.Insteadof != nil {
t.visitor.Enter("Insteadof", false)
for _, c := range nn.Insteadof {
t.Traverse(c)
}
t.visitor.Leave("Insteadof", false)
}
2020-03-12 22:20:48 +00:00
case *ast.StmtTry:
2020-05-13 18:05:15 +00:00
if nn == nil {
return
}
if !t.visitor.EnterNode(nn) {
return
}
if nn.Stmts != nil {
t.visitor.Enter("Stmts", false)
for _, c := range nn.Stmts {
t.Traverse(c)
}
t.visitor.Leave("Stmts", false)
}
if nn.Catches != nil {
t.visitor.Enter("Catches", false)
for _, c := range nn.Catches {
t.Traverse(c)
}
t.visitor.Leave("Catches", false)
}
if nn.Finally != nil {
t.visitor.Enter("Finally", true)
t.Traverse(nn.Finally)
t.visitor.Leave("Finally", true)
}
2020-03-12 22:20:48 +00:00
case *ast.StmtUnset:
2020-05-13 18:05:15 +00:00
if nn == nil {
return
}
if !t.visitor.EnterNode(nn) {
return
}
if nn.Vars != nil {
t.visitor.Enter("Vars", false)
for _, c := range nn.Vars {
t.Traverse(c)
}
t.visitor.Leave("Vars", false)
}
2020-03-12 22:20:48 +00:00
case *ast.StmtUse:
2020-05-13 18:05:15 +00:00
if nn == nil {
return
}
if !t.visitor.EnterNode(nn) {
return
}
if nn.Type != nil {
t.visitor.Enter("Type", true)
t.Traverse(nn.Type)
t.visitor.Leave("Type", true)
}
if nn.UseDeclarations != nil {
t.visitor.Enter("UseDeclarations", false)
for _, c := range nn.UseDeclarations {
t.Traverse(c)
}
t.visitor.Leave("UseDeclarations", false)
}
case *ast.StmtGroupUse:
if nn == nil {
return
}
if !t.visitor.EnterNode(nn) {
return
}
if nn.Type != nil {
t.visitor.Enter("Type", true)
t.Traverse(nn.Type)
t.visitor.Leave("Type", true)
}
if nn.Prefix != nil {
t.visitor.Enter("Prefix", true)
t.Traverse(nn.Prefix)
t.visitor.Leave("Prefix", true)
}
if nn.UseDeclarations != nil {
t.visitor.Enter("UseDeclarations", false)
for _, c := range nn.UseDeclarations {
t.Traverse(c)
}
t.visitor.Leave("UseDeclarations", false)
}
case *ast.StmtUseDeclaration:
2020-05-13 18:05:15 +00:00
if nn == nil {
return
}
if !t.visitor.EnterNode(nn) {
return
}
if nn.Type != nil {
t.visitor.Enter("Type", true)
t.Traverse(nn.Type)
t.visitor.Leave("Type", true)
2020-05-13 18:05:15 +00:00
}
if nn.Use != nil {
t.visitor.Enter("Use", true)
t.Traverse(nn.Use)
t.visitor.Leave("Use", true)
2020-05-13 18:05:15 +00:00
}
if nn.Alias != nil {
t.visitor.Enter("Alias", true)
t.Traverse(nn.Alias)
t.visitor.Leave("Alias", true)
}
2020-03-12 22:20:48 +00:00
case *ast.StmtWhile:
2020-05-13 18:05:15 +00:00
if nn == nil {
return
}
if !t.visitor.EnterNode(nn) {
return
}
if nn.Cond != nil {
t.visitor.Enter("Cond", true)
t.Traverse(nn.Cond)
t.visitor.Leave("Cond", true)
}
if nn.Stmt != nil {
t.visitor.Enter("Stmt", true)
t.Traverse(nn.Stmt)
t.visitor.Leave("Stmt", true)
}
2020-03-12 22:20:48 +00:00
case *ast.ExprArray:
2020-05-13 18:05:15 +00:00
if nn == nil {
return
}
if !t.visitor.EnterNode(nn) {
return
}
if nn.Items != nil {
t.visitor.Enter("Items", false)
for _, c := range nn.Items {
t.Traverse(c)
}
t.visitor.Leave("Items", false)
}
2020-03-12 22:20:48 +00:00
case *ast.ExprArrayDimFetch:
2020-05-13 18:05:15 +00:00
if nn == nil {
return
}
if !t.visitor.EnterNode(nn) {
return
}
if nn.Var != nil {
t.visitor.Enter("Var", true)
t.Traverse(nn.Var)
t.visitor.Leave("Var", true)
}
if nn.Dim != nil {
t.visitor.Enter("Dim", true)
t.Traverse(nn.Dim)
t.visitor.Leave("Dim", true)
}
2020-03-12 22:20:48 +00:00
case *ast.ExprArrayItem:
2020-05-13 18:05:15 +00:00
if nn == nil {
return
}
if !t.visitor.EnterNode(nn) {
return
}
if nn.Key != nil {
t.visitor.Enter("Key", true)
t.Traverse(nn.Key)
t.visitor.Leave("Key", true)
}
if nn.Val != nil {
t.visitor.Enter("Val", true)
t.Traverse(nn.Val)
t.visitor.Leave("Val", true)
}
2020-03-12 22:20:48 +00:00
case *ast.ExprArrowFunction:
2020-05-13 18:05:15 +00:00
if nn == nil {
return
}
if !t.visitor.EnterNode(nn) {
return
}
if nn.Params != nil {
t.visitor.Enter("Params", false)
for _, c := range nn.Params {
t.Traverse(c)
}
t.visitor.Leave("Params", false)
}
if nn.ReturnType != nil {
t.visitor.Enter("ReturnType", true)
t.Traverse(nn.ReturnType)
t.visitor.Leave("ReturnType", true)
}
if nn.Expr != nil {
t.visitor.Enter("Expr", true)
t.Traverse(nn.Expr)
t.visitor.Leave("Expr", true)
}
2020-03-12 22:20:48 +00:00
case *ast.ExprBitwiseNot:
2020-05-13 18:05:15 +00:00
if nn == nil {
return
}
if !t.visitor.EnterNode(nn) {
return
}
if nn.Expr != nil {
t.visitor.Enter("Expr", true)
t.Traverse(nn.Expr)
t.visitor.Leave("Expr", true)
}
2020-03-12 22:20:48 +00:00
case *ast.ExprBooleanNot:
2020-05-13 18:05:15 +00:00
if nn == nil {
return
}
if !t.visitor.EnterNode(nn) {
return
}
if nn.Expr != nil {
t.visitor.Enter("Expr", true)
t.Traverse(nn.Expr)
t.visitor.Leave("Expr", true)
}
2020-03-12 22:20:48 +00:00
case *ast.ExprClassConstFetch:
2020-05-13 18:05:15 +00:00
if nn == nil {
return
}
if !t.visitor.EnterNode(nn) {
return
}
if nn.Class != nil {
t.visitor.Enter("Class", true)
t.Traverse(nn.Class)
t.visitor.Leave("Class", true)
}
if nn.ConstantName != nil {
t.visitor.Enter("Name", true)
2020-05-13 18:05:15 +00:00
t.Traverse(nn.ConstantName)
t.visitor.Leave("Name", true)
2020-05-13 18:05:15 +00:00
}
2020-03-12 22:20:48 +00:00
case *ast.ExprClone:
2020-05-13 18:05:15 +00:00
if nn == nil {
return
}
if !t.visitor.EnterNode(nn) {
return
}
if nn.Expr != nil {
t.visitor.Enter("Expr", true)
t.Traverse(nn.Expr)
t.visitor.Leave("Expr", true)
}
2020-03-12 22:20:48 +00:00
case *ast.ExprClosure:
2020-05-13 18:05:15 +00:00
if nn == nil {
return
}
if !t.visitor.EnterNode(nn) {
return
}
if nn.Params != nil {
t.visitor.Enter("Params", false)
for _, c := range nn.Params {
t.Traverse(c)
}
t.visitor.Leave("Params", false)
}
if nn.ClosureUse != nil {
t.visitor.Enter("ClosureUse", true)
t.Traverse(nn.ClosureUse)
t.visitor.Leave("ClosureUse", true)
}
if nn.ReturnType != nil {
t.visitor.Enter("ReturnType", true)
t.Traverse(nn.ReturnType)
t.visitor.Leave("ReturnType", true)
}
if nn.Stmts != nil {
t.visitor.Enter("Stmts", false)
for _, c := range nn.Stmts {
t.Traverse(c)
}
t.visitor.Leave("Stmts", false)
}
2020-03-12 22:20:48 +00:00
case *ast.ExprClosureUse:
2020-05-13 18:05:15 +00:00
if nn == nil {
return
}
if !t.visitor.EnterNode(nn) {
return
}
if nn.Uses != nil {
t.visitor.Enter("Uses", false)
for _, c := range nn.Uses {
t.Traverse(c)
}
t.visitor.Leave("Uses", false)
}
2020-03-12 22:20:48 +00:00
case *ast.ExprConstFetch:
2020-05-13 18:05:15 +00:00
if nn == nil {
return
}
if !t.visitor.EnterNode(nn) {
return
}
if nn.Const != nil {
t.visitor.Enter("Const", true)
t.Traverse(nn.Const)
t.visitor.Leave("Const", true)
}
2020-03-12 22:20:48 +00:00
case *ast.ExprEmpty:
2020-05-13 18:05:15 +00:00
if nn == nil {
return
}
if !t.visitor.EnterNode(nn) {
return
}
if nn.Expr != nil {
t.visitor.Enter("Expr", true)
t.Traverse(nn.Expr)
t.visitor.Leave("Expr", true)
}
2020-03-12 22:20:48 +00:00
case *ast.ExprErrorSuppress:
2020-05-13 18:05:15 +00:00
if nn == nil {
return
}
if !t.visitor.EnterNode(nn) {
return
}
if nn.Expr != nil {
t.visitor.Enter("Expr", true)
t.Traverse(nn.Expr)
t.visitor.Leave("Expr", true)
}
2020-03-12 22:20:48 +00:00
case *ast.ExprEval:
2020-05-13 18:05:15 +00:00
if nn == nil {
return
}
if !t.visitor.EnterNode(nn) {
return
}
if nn.Expr != nil {
t.visitor.Enter("Expr", true)
t.Traverse(nn.Expr)
t.visitor.Leave("Expr", true)
}
2020-03-12 22:20:48 +00:00
case *ast.ExprExit:
2020-05-13 18:05:15 +00:00
if nn == nil {
return
}
if !t.visitor.EnterNode(nn) {
return
}
if nn.Expr != nil {
t.visitor.Enter("Expr", true)
t.Traverse(nn.Expr)
t.visitor.Leave("Expr", true)
}
2020-03-12 22:20:48 +00:00
case *ast.ExprFunctionCall:
2020-05-13 18:05:15 +00:00
if nn == nil {
return
}
if !t.visitor.EnterNode(nn) {
return
}
if nn.Function != nil {
t.visitor.Enter("Function", true)
t.Traverse(nn.Function)
t.visitor.Leave("Function", true)
}
if nn.Arguments != nil {
t.visitor.Enter("Arguments", false)
for _, c := range nn.Arguments {
t.Traverse(c)
}
t.visitor.Leave("Arguments", false)
2020-05-13 18:05:15 +00:00
}
2020-03-12 22:20:48 +00:00
case *ast.ExprInclude:
2020-05-13 18:05:15 +00:00
if nn == nil {
return
}
if !t.visitor.EnterNode(nn) {
return
}
if nn.Expr != nil {
t.visitor.Enter("Expr", true)
t.Traverse(nn.Expr)
t.visitor.Leave("Expr", true)
}
2020-03-12 22:20:48 +00:00
case *ast.ExprIncludeOnce:
2020-05-13 18:05:15 +00:00
if nn == nil {
return
}
if !t.visitor.EnterNode(nn) {
return
}
if nn.Expr != nil {
t.visitor.Enter("Expr", true)
t.Traverse(nn.Expr)
t.visitor.Leave("Expr", true)
}
2020-03-12 22:20:48 +00:00
case *ast.ExprInstanceOf:
2020-05-13 18:05:15 +00:00
if nn == nil {
return
}
if !t.visitor.EnterNode(nn) {
return
}
if nn.Expr != nil {
t.visitor.Enter("Expr", true)
t.Traverse(nn.Expr)
t.visitor.Leave("Expr", true)
}
if nn.Class != nil {
t.visitor.Enter("Class", true)
t.Traverse(nn.Class)
t.visitor.Leave("Class", true)
}
2020-03-12 22:20:48 +00:00
case *ast.ExprIsset:
2020-05-13 18:05:15 +00:00
if nn == nil {
return
}
if !t.visitor.EnterNode(nn) {
return
}
if nn.Vars != nil {
t.visitor.Enter("Vars", false)
for _, c := range nn.Vars {
t.Traverse(c)
}
t.visitor.Leave("Vars", false)
}
2020-03-12 22:20:48 +00:00
case *ast.ExprList:
2020-05-13 18:05:15 +00:00
if nn == nil {
return
}
if !t.visitor.EnterNode(nn) {
return
}
if nn.Items != nil {
t.visitor.Enter("Items", false)
for _, c := range nn.Items {
t.Traverse(c)
}
t.visitor.Leave("Items", false)
}
2020-03-12 22:20:48 +00:00
case *ast.ExprMethodCall:
2020-05-13 18:05:15 +00:00
if nn == nil {
return
}
if !t.visitor.EnterNode(nn) {
return
}
if nn.Var != nil {
t.visitor.Enter("Var", true)
t.Traverse(nn.Var)
t.visitor.Leave("Var", true)
}
if nn.Method != nil {
t.visitor.Enter("Method", true)
t.Traverse(nn.Method)
t.visitor.Leave("Method", true)
}
if nn.Arguments != nil {
t.visitor.Enter("Arguments", false)
for _, c := range nn.Arguments {
t.Traverse(c)
}
t.visitor.Leave("Arguments", false)
2020-07-05 15:27:34 +00:00
}
2020-03-12 22:20:48 +00:00
case *ast.ExprNew:
2020-05-13 18:05:15 +00:00
if nn == nil {
return
}
if !t.visitor.EnterNode(nn) {
return
}
if nn.Class != nil {
t.visitor.Enter("Class", true)
t.Traverse(nn.Class)
t.visitor.Leave("Class", true)
}
if nn.Arguments != nil {
t.visitor.Enter("Arguments", false)
for _, c := range nn.Arguments {
t.Traverse(c)
}
t.visitor.Leave("Arguments", false)
2020-07-05 15:27:34 +00:00
}
2020-03-12 22:20:48 +00:00
case *ast.ExprPostDec:
2020-05-13 18:05:15 +00:00
if nn == nil {
return
}
if !t.visitor.EnterNode(nn) {
return
}
if nn.Var != nil {
t.visitor.Enter("Var", true)
t.Traverse(nn.Var)
t.visitor.Leave("Var", true)
}
2020-03-12 22:20:48 +00:00
case *ast.ExprPostInc:
2020-05-13 18:05:15 +00:00
if nn == nil {
return
}
if !t.visitor.EnterNode(nn) {
return
}
if nn.Var != nil {
t.visitor.Enter("Var", true)
t.Traverse(nn.Var)
t.visitor.Leave("Var", true)
}
2020-03-12 22:20:48 +00:00
case *ast.ExprPreDec:
2020-05-13 18:05:15 +00:00
if nn == nil {
return
}
if !t.visitor.EnterNode(nn) {
return
}
if nn.Var != nil {
t.visitor.Enter("Var", true)
t.Traverse(nn.Var)
t.visitor.Leave("Var", true)
}
2020-03-12 22:20:48 +00:00
case *ast.ExprPreInc:
2020-05-13 18:05:15 +00:00
if nn == nil {
return
}
if !t.visitor.EnterNode(nn) {
return
}
if nn.Var != nil {
t.visitor.Enter("Var", true)
t.Traverse(nn.Var)
t.visitor.Leave("Var", true)
}
2020-03-12 22:20:48 +00:00
case *ast.ExprPrint:
2020-05-13 18:05:15 +00:00
if nn == nil {
return
}
if !t.visitor.EnterNode(nn) {
return
}
if nn.Expr != nil {
t.visitor.Enter("Expr", true)
t.Traverse(nn.Expr)
t.visitor.Leave("Expr", true)
}
2020-03-12 22:20:48 +00:00
case *ast.ExprPropertyFetch:
2020-05-13 18:05:15 +00:00
if nn == nil {
return
}
if !t.visitor.EnterNode(nn) {
return
}
if nn.Var != nil {
t.visitor.Enter("Var", true)
t.Traverse(nn.Var)
t.visitor.Leave("Var", true)
}
if nn.Property != nil {
t.visitor.Enter("Property", true)
t.Traverse(nn.Property)
t.visitor.Leave("Property", true)
}
2020-03-12 22:20:48 +00:00
case *ast.ExprReference:
2020-05-13 18:05:15 +00:00
if nn == nil {
return
}
if !t.visitor.EnterNode(nn) {
return
}
if nn.Var != nil {
t.visitor.Enter("Var", true)
t.Traverse(nn.Var)
t.visitor.Leave("Var", true)
}
2020-03-12 22:20:48 +00:00
case *ast.ExprRequire:
2020-05-13 18:05:15 +00:00
if nn == nil {
return
}
if !t.visitor.EnterNode(nn) {
return
}
if nn.Expr != nil {
t.visitor.Enter("Expr", true)
t.Traverse(nn.Expr)
t.visitor.Leave("Expr", true)
}
2020-03-12 22:20:48 +00:00
case *ast.ExprRequireOnce:
2020-05-13 18:05:15 +00:00
if nn == nil {
return
}
if !t.visitor.EnterNode(nn) {
return
}
if nn.Expr != nil {
t.visitor.Enter("Expr", true)
t.Traverse(nn.Expr)
t.visitor.Leave("Expr", true)
}
2020-03-12 22:20:48 +00:00
case *ast.ExprShellExec:
2020-05-13 18:05:15 +00:00
if nn == nil {
return
}
if !t.visitor.EnterNode(nn) {
return
}
if nn.Parts != nil {
t.visitor.Enter("Parts", false)
for _, c := range nn.Parts {
t.Traverse(c)
}
t.visitor.Leave("Parts", false)
}
2020-03-12 22:20:48 +00:00
case *ast.ExprStaticCall:
2020-05-13 18:05:15 +00:00
if nn == nil {
return
}
if !t.visitor.EnterNode(nn) {
return
}
if nn.Class != nil {
t.visitor.Enter("Class", true)
t.Traverse(nn.Class)
t.visitor.Leave("Class", true)
}
if nn.Call != nil {
t.visitor.Enter("Call", true)
t.Traverse(nn.Call)
t.visitor.Leave("Call", true)
}
if nn.Arguments != nil {
t.visitor.Enter("Arguments", false)
for _, c := range nn.Arguments {
t.Traverse(c)
}
t.visitor.Leave("Arguments", false)
2020-05-13 18:05:15 +00:00
}
2020-03-12 22:20:48 +00:00
case *ast.ExprStaticPropertyFetch:
2020-05-13 18:05:15 +00:00
if nn == nil {
return
}
if !t.visitor.EnterNode(nn) {
return
}
if nn.Class != nil {
t.visitor.Enter("Class", true)
t.Traverse(nn.Class)
t.visitor.Leave("Class", true)
}
if nn.Property != nil {
t.visitor.Enter("Property", true)
t.Traverse(nn.Property)
t.visitor.Leave("Property", true)
}
2020-03-12 22:20:48 +00:00
case *ast.ExprTernary:
2020-05-13 18:05:15 +00:00
if nn == nil {
return
}
if !t.visitor.EnterNode(nn) {
return
}
if nn.Condition != nil {
t.visitor.Enter("Condition", true)
t.Traverse(nn.Condition)
t.visitor.Leave("Condition", true)
}
if nn.IfTrue != nil {
t.visitor.Enter("IfTrue", true)
t.Traverse(nn.IfTrue)
t.visitor.Leave("IfTrue", true)
}
if nn.IfFalse != nil {
t.visitor.Enter("IfFalse", true)
t.Traverse(nn.IfFalse)
t.visitor.Leave("IfFalse", true)
}
2020-03-12 22:20:48 +00:00
case *ast.ExprUnaryMinus:
2020-05-13 18:05:15 +00:00
if nn == nil {
return
}
if !t.visitor.EnterNode(nn) {
return
}
if nn.Expr != nil {
t.visitor.Enter("Expr", true)
t.Traverse(nn.Expr)
t.visitor.Leave("Expr", true)
}
2020-03-12 22:20:48 +00:00
case *ast.ExprUnaryPlus:
2020-05-13 18:05:15 +00:00
if nn == nil {
return
}
if !t.visitor.EnterNode(nn) {
return
}
if nn.Expr != nil {
t.visitor.Enter("Expr", true)
t.Traverse(nn.Expr)
t.visitor.Leave("Expr", true)
}
2020-03-12 22:20:48 +00:00
case *ast.ExprVariable:
2020-05-13 18:05:15 +00:00
if nn == nil {
return
}
if !t.visitor.EnterNode(nn) {
return
}
if nn.VarName != nil {
t.visitor.Enter("VarName", true)
t.Traverse(nn.VarName)
t.visitor.Leave("VarName", true)
}
2020-03-12 22:20:48 +00:00
case *ast.ExprYield:
2020-05-13 18:05:15 +00:00
if nn == nil {
return
}
if !t.visitor.EnterNode(nn) {
return
}
if nn.Key != nil {
t.visitor.Enter("Key", true)
t.Traverse(nn.Key)
t.visitor.Leave("Key", true)
}
if nn.Value != nil {
t.visitor.Enter("Value", true)
t.Traverse(nn.Value)
t.visitor.Leave("Value", true)
}
2020-03-12 22:20:48 +00:00
case *ast.ExprYieldFrom:
2020-05-13 18:05:15 +00:00
if nn == nil {
return
}
if !t.visitor.EnterNode(nn) {
return
}
if nn.Expr != nil {
t.visitor.Enter("Expr", true)
t.Traverse(nn.Expr)
t.visitor.Leave("Expr", true)
}
2020-03-12 22:20:48 +00:00
case *ast.ExprAssign:
2020-05-13 18:05:15 +00:00
if nn == nil {
return
}
if !t.visitor.EnterNode(nn) {
return
}
if nn.Var != nil {
t.visitor.Enter("Var", true)
t.Traverse(nn.Var)
t.visitor.Leave("Var", true)
}
if nn.Expr != nil {
t.visitor.Enter("Expr", true)
t.Traverse(nn.Expr)
t.visitor.Leave("Expr", true)
}
2020-03-12 22:20:48 +00:00
case *ast.ExprAssignReference:
2020-05-13 18:05:15 +00:00
if nn == nil {
return
}
if !t.visitor.EnterNode(nn) {
return
}
if nn.Var != nil {
t.visitor.Enter("Var", true)
t.Traverse(nn.Var)
t.visitor.Leave("Var", true)
}
if nn.Expr != nil {
t.visitor.Enter("Expr", true)
t.Traverse(nn.Expr)
t.visitor.Leave("Expr", true)
}
2020-03-12 22:20:48 +00:00
case *ast.ExprAssignBitwiseAnd:
2020-05-13 18:05:15 +00:00
if nn == nil {
return
}
if !t.visitor.EnterNode(nn) {
return
}
if nn.Var != nil {
t.visitor.Enter("Var", true)
t.Traverse(nn.Var)
t.visitor.Leave("Var", true)
}
if nn.Expr != nil {
t.visitor.Enter("Expr", true)
t.Traverse(nn.Expr)
t.visitor.Leave("Expr", true)
}
2020-03-12 22:20:48 +00:00
case *ast.ExprAssignBitwiseOr:
2020-05-13 18:05:15 +00:00
if nn == nil {
return
}
if !t.visitor.EnterNode(nn) {
return
}
if nn.Var != nil {
t.visitor.Enter("Var", true)
t.Traverse(nn.Var)
t.visitor.Leave("Var", true)
}
if nn.Expr != nil {
t.visitor.Enter("Expr", true)
t.Traverse(nn.Expr)
t.visitor.Leave("Expr", true)
}
2020-03-12 22:20:48 +00:00
case *ast.ExprAssignBitwiseXor:
2020-05-13 18:05:15 +00:00
if nn == nil {
return
}
if !t.visitor.EnterNode(nn) {
return
}
if nn.Var != nil {
t.visitor.Enter("Var", true)
t.Traverse(nn.Var)
t.visitor.Leave("Var", true)
}
if nn.Expr != nil {
t.visitor.Enter("Expr", true)
t.Traverse(nn.Expr)
t.visitor.Leave("Expr", true)
}
2020-03-12 22:20:48 +00:00
case *ast.ExprAssignCoalesce:
2020-05-13 18:05:15 +00:00
if nn == nil {
return
}
if !t.visitor.EnterNode(nn) {
return
}
if nn.Var != nil {
t.visitor.Enter("Var", true)
t.Traverse(nn.Var)
t.visitor.Leave("Var", true)
}
if nn.Expr != nil {
t.visitor.Enter("Expr", true)
t.Traverse(nn.Expr)
t.visitor.Leave("Expr", true)
}
2020-03-12 22:20:48 +00:00
case *ast.ExprAssignConcat:
2020-05-13 18:05:15 +00:00
if nn == nil {
return
}
if !t.visitor.EnterNode(nn) {
return
}
if nn.Var != nil {
t.visitor.Enter("Var", true)
t.Traverse(nn.Var)
t.visitor.Leave("Var", true)
}
if nn.Expr != nil {
t.visitor.Enter("Expr", true)
t.Traverse(nn.Expr)
t.visitor.Leave("Expr", true)
}
2020-03-12 22:20:48 +00:00
case *ast.ExprAssignDiv:
2020-05-13 18:05:15 +00:00
if nn == nil {
return
}
if !t.visitor.EnterNode(nn) {
return
}
if nn.Var != nil {
t.visitor.Enter("Var", true)
t.Traverse(nn.Var)
t.visitor.Leave("Var", true)
}
if nn.Expr != nil {
t.visitor.Enter("Expr", true)
t.Traverse(nn.Expr)
t.visitor.Leave("Expr", true)
}
2020-03-12 22:20:48 +00:00
case *ast.ExprAssignMinus:
2020-05-13 18:05:15 +00:00
if nn == nil {
return
}
if !t.visitor.EnterNode(nn) {
return
}
if nn.Var != nil {
t.visitor.Enter("Var", true)
t.Traverse(nn.Var)
t.visitor.Leave("Var", true)
}
if nn.Expr != nil {
t.visitor.Enter("Expr", true)
t.Traverse(nn.Expr)
t.visitor.Leave("Expr", true)
}
2020-03-12 22:20:48 +00:00
case *ast.ExprAssignMod:
2020-05-13 18:05:15 +00:00
if nn == nil {
return
}
if !t.visitor.EnterNode(nn) {
return
}
if nn.Var != nil {
t.visitor.Enter("Var", true)
t.Traverse(nn.Var)
t.visitor.Leave("Var", true)
}
if nn.Expr != nil {
t.visitor.Enter("Expr", true)
t.Traverse(nn.Expr)
t.visitor.Leave("Expr", true)
}
2020-03-12 22:20:48 +00:00
case *ast.ExprAssignMul:
2020-05-13 18:05:15 +00:00
if nn == nil {
return
}
if !t.visitor.EnterNode(nn) {
return
}
if nn.Var != nil {
t.visitor.Enter("Var", true)
t.Traverse(nn.Var)
t.visitor.Leave("Var", true)
}
if nn.Expr != nil {
t.visitor.Enter("Expr", true)
t.Traverse(nn.Expr)
t.visitor.Leave("Expr", true)
}
2020-03-12 22:20:48 +00:00
case *ast.ExprAssignPlus:
2020-05-13 18:05:15 +00:00
if nn == nil {
return
}
if !t.visitor.EnterNode(nn) {
return
}
if nn.Var != nil {
t.visitor.Enter("Var", true)
t.Traverse(nn.Var)
t.visitor.Leave("Var", true)
}
if nn.Expr != nil {
t.visitor.Enter("Expr", true)
t.Traverse(nn.Expr)
t.visitor.Leave("Expr", true)
}
2020-03-12 22:20:48 +00:00
case *ast.ExprAssignPow:
2020-05-13 18:05:15 +00:00
if nn == nil {
return
}
if !t.visitor.EnterNode(nn) {
return
}
if nn.Var != nil {
t.visitor.Enter("Var", true)
t.Traverse(nn.Var)
t.visitor.Leave("Var", true)
}
if nn.Expr != nil {
t.visitor.Enter("Expr", true)
t.Traverse(nn.Expr)
t.visitor.Leave("Expr", true)
}
2020-03-12 22:20:48 +00:00
case *ast.ExprAssignShiftLeft:
2020-05-13 18:05:15 +00:00
if nn == nil {
return
}
if !t.visitor.EnterNode(nn) {
return
}
if nn.Var != nil {
t.visitor.Enter("Var", true)
t.Traverse(nn.Var)
t.visitor.Leave("Var", true)
}
if nn.Expr != nil {
t.visitor.Enter("Expr", true)
t.Traverse(nn.Expr)
t.visitor.Leave("Expr", true)
}
2020-03-12 22:20:48 +00:00
case *ast.ExprAssignShiftRight:
2020-05-13 18:05:15 +00:00
if nn == nil {
return
}
if !t.visitor.EnterNode(nn) {
return
}
if nn.Var != nil {
t.visitor.Enter("Var", true)
t.Traverse(nn.Var)
t.visitor.Leave("Var", true)
}
if nn.Expr != nil {
t.visitor.Enter("Expr", true)
t.Traverse(nn.Expr)
t.visitor.Leave("Expr", true)
}
2020-03-12 22:20:48 +00:00
case *ast.ExprBinaryBitwiseAnd:
2020-05-13 18:05:15 +00:00
if nn == nil {
return
}
if !t.visitor.EnterNode(nn) {
return
}
if nn.Left != nil {
t.visitor.Enter("Left", true)
t.Traverse(nn.Left)
t.visitor.Leave("Left", true)
}
if nn.Right != nil {
t.visitor.Enter("Right", true)
t.Traverse(nn.Right)
t.visitor.Leave("Right", true)
}
2020-03-12 22:20:48 +00:00
case *ast.ExprBinaryBitwiseOr:
2020-05-13 18:05:15 +00:00
if nn == nil {
return
}
if !t.visitor.EnterNode(nn) {
return
}
if nn.Left != nil {
t.visitor.Enter("Left", true)
t.Traverse(nn.Left)
t.visitor.Leave("Left", true)
}
if nn.Right != nil {
t.visitor.Enter("Right", true)
t.Traverse(nn.Right)
t.visitor.Leave("Right", true)
}
2020-03-12 22:20:48 +00:00
case *ast.ExprBinaryBitwiseXor:
2020-05-13 18:05:15 +00:00
if nn == nil {
return
}
if !t.visitor.EnterNode(nn) {
return
}
if nn.Left != nil {
t.visitor.Enter("Left", true)
t.Traverse(nn.Left)
t.visitor.Leave("Left", true)
}
if nn.Right != nil {
t.visitor.Enter("Right", true)
t.Traverse(nn.Right)
t.visitor.Leave("Right", true)
}
2020-03-12 22:20:48 +00:00
case *ast.ExprBinaryBooleanAnd:
2020-05-13 18:05:15 +00:00
if nn == nil {
return
}
if !t.visitor.EnterNode(nn) {
return
}
if nn.Left != nil {
t.visitor.Enter("Left", true)
t.Traverse(nn.Left)
t.visitor.Leave("Left", true)
}
if nn.Right != nil {
t.visitor.Enter("Right", true)
t.Traverse(nn.Right)
t.visitor.Leave("Right", true)
}
2020-03-12 22:20:48 +00:00
case *ast.ExprBinaryBooleanOr:
2020-05-13 18:05:15 +00:00
if nn == nil {
return
}
if !t.visitor.EnterNode(nn) {
return
}
if nn.Left != nil {
t.visitor.Enter("Left", true)
t.Traverse(nn.Left)
t.visitor.Leave("Left", true)
}
if nn.Right != nil {
t.visitor.Enter("Right", true)
t.Traverse(nn.Right)
t.visitor.Leave("Right", true)
}
2020-03-12 22:20:48 +00:00
case *ast.ExprBinaryCoalesce:
2020-05-13 18:05:15 +00:00
if nn == nil {
return
}
if !t.visitor.EnterNode(nn) {
return
}
if nn.Left != nil {
t.visitor.Enter("Left", true)
t.Traverse(nn.Left)
t.visitor.Leave("Left", true)
}
if nn.Right != nil {
t.visitor.Enter("Right", true)
t.Traverse(nn.Right)
t.visitor.Leave("Right", true)
}
2020-03-12 22:20:48 +00:00
case *ast.ExprBinaryConcat:
2020-05-13 18:05:15 +00:00
if nn == nil {
return
}
if !t.visitor.EnterNode(nn) {
return
}
if nn.Left != nil {
t.visitor.Enter("Left", true)
t.Traverse(nn.Left)
t.visitor.Leave("Left", true)
}
if nn.Right != nil {
t.visitor.Enter("Right", true)
t.Traverse(nn.Right)
t.visitor.Leave("Right", true)
}
2020-03-12 22:20:48 +00:00
case *ast.ExprBinaryDiv:
2020-05-13 18:05:15 +00:00
if nn == nil {
return
}
if !t.visitor.EnterNode(nn) {
return
}
if nn.Left != nil {
t.visitor.Enter("Left", true)
t.Traverse(nn.Left)
t.visitor.Leave("Left", true)
}
if nn.Right != nil {
t.visitor.Enter("Right", true)
t.Traverse(nn.Right)
t.visitor.Leave("Right", true)
}
2020-03-12 22:20:48 +00:00
case *ast.ExprBinaryEqual:
2020-05-13 18:05:15 +00:00
if nn == nil {
return
}
if !t.visitor.EnterNode(nn) {
return
}
if nn.Left != nil {
t.visitor.Enter("Left", true)
t.Traverse(nn.Left)
t.visitor.Leave("Left", true)
}
if nn.Right != nil {
t.visitor.Enter("Right", true)
t.Traverse(nn.Right)
t.visitor.Leave("Right", true)
}
2020-03-12 22:20:48 +00:00
case *ast.ExprBinaryGreater:
2020-05-13 18:05:15 +00:00
if nn == nil {
return
}
if !t.visitor.EnterNode(nn) {
return
}
if nn.Left != nil {
t.visitor.Enter("Left", true)
t.Traverse(nn.Left)
t.visitor.Leave("Left", true)
}
if nn.Right != nil {
t.visitor.Enter("Right", true)
t.Traverse(nn.Right)
t.visitor.Leave("Right", true)
}
2020-03-12 22:20:48 +00:00
case *ast.ExprBinaryGreaterOrEqual:
2020-05-13 18:05:15 +00:00
if nn == nil {
return
}
if !t.visitor.EnterNode(nn) {
return
}
if nn.Left != nil {
t.visitor.Enter("Left", true)
t.Traverse(nn.Left)
t.visitor.Leave("Left", true)
}
if nn.Right != nil {
t.visitor.Enter("Right", true)
t.Traverse(nn.Right)
t.visitor.Leave("Right", true)
}
2020-03-12 22:20:48 +00:00
case *ast.ExprBinaryIdentical:
2020-05-13 18:05:15 +00:00
if nn == nil {
return
}
if !t.visitor.EnterNode(nn) {
return
}
if nn.Left != nil {
t.visitor.Enter("Left", true)
t.Traverse(nn.Left)
t.visitor.Leave("Left", true)
}
if nn.Right != nil {
t.visitor.Enter("Right", true)
t.Traverse(nn.Right)
t.visitor.Leave("Right", true)
}
2020-03-12 22:20:48 +00:00
case *ast.ExprBinaryLogicalAnd:
2020-05-13 18:05:15 +00:00
if nn == nil {
return
}
if !t.visitor.EnterNode(nn) {
return
}
if nn.Left != nil {
t.visitor.Enter("Left", true)
t.Traverse(nn.Left)
t.visitor.Leave("Left", true)
}
if nn.Right != nil {
t.visitor.Enter("Right", true)
t.Traverse(nn.Right)
t.visitor.Leave("Right", true)
}
2020-03-12 22:20:48 +00:00
case *ast.ExprBinaryLogicalOr:
2020-05-13 18:05:15 +00:00
if nn == nil {
return
}
if !t.visitor.EnterNode(nn) {
return
}
if nn.Left != nil {
t.visitor.Enter("Left", true)
t.Traverse(nn.Left)
t.visitor.Leave("Left", true)
}
if nn.Right != nil {
t.visitor.Enter("Right", true)
t.Traverse(nn.Right)
t.visitor.Leave("Right", true)
}
2020-03-12 22:20:48 +00:00
case *ast.ExprBinaryLogicalXor:
2020-05-13 18:05:15 +00:00
if nn == nil {
return
}
if !t.visitor.EnterNode(nn) {
return
}
if nn.Left != nil {
t.visitor.Enter("Left", true)
t.Traverse(nn.Left)
t.visitor.Leave("Left", true)
}
if nn.Right != nil {
t.visitor.Enter("Right", true)
t.Traverse(nn.Right)
t.visitor.Leave("Right", true)
}
2020-03-12 22:20:48 +00:00
case *ast.ExprBinaryMinus:
2020-05-13 18:05:15 +00:00
if nn == nil {
return
}
if !t.visitor.EnterNode(nn) {
return
}
if nn.Left != nil {
t.visitor.Enter("Left", true)
t.Traverse(nn.Left)
t.visitor.Leave("Left", true)
}
if nn.Right != nil {
t.visitor.Enter("Right", true)
t.Traverse(nn.Right)
t.visitor.Leave("Right", true)
}
2020-03-12 22:20:48 +00:00
case *ast.ExprBinaryMod:
2020-05-13 18:05:15 +00:00
if nn == nil {
return
}
if !t.visitor.EnterNode(nn) {
return
}
if nn.Left != nil {
t.visitor.Enter("Left", true)
t.Traverse(nn.Left)
t.visitor.Leave("Left", true)
}
if nn.Right != nil {
t.visitor.Enter("Right", true)
t.Traverse(nn.Right)
t.visitor.Leave("Right", true)
}
2020-03-12 22:20:48 +00:00
case *ast.ExprBinaryMul:
2020-05-13 18:05:15 +00:00
if nn == nil {
return
}
if !t.visitor.EnterNode(nn) {
return
}
if nn.Left != nil {
t.visitor.Enter("Left", true)
t.Traverse(nn.Left)
t.visitor.Leave("Left", true)
}
if nn.Right != nil {
t.visitor.Enter("Right", true)
t.Traverse(nn.Right)
t.visitor.Leave("Right", true)
}
2020-03-12 22:20:48 +00:00
case *ast.ExprBinaryNotEqual:
2020-05-13 18:05:15 +00:00
if nn == nil {
return
}
if !t.visitor.EnterNode(nn) {
return
}
if nn.Left != nil {
t.visitor.Enter("Left", true)
t.Traverse(nn.Left)
t.visitor.Leave("Left", true)
}
if nn.Right != nil {
t.visitor.Enter("Right", true)
t.Traverse(nn.Right)
t.visitor.Leave("Right", true)
}
2020-03-12 22:20:48 +00:00
case *ast.ExprBinaryNotIdentical:
2020-05-13 18:05:15 +00:00
if nn == nil {
return
}
if !t.visitor.EnterNode(nn) {
return
}
if nn.Left != nil {
t.visitor.Enter("Left", true)
t.Traverse(nn.Left)
t.visitor.Leave("Left", true)
}
if nn.Right != nil {
t.visitor.Enter("Right", true)
t.Traverse(nn.Right)
t.visitor.Leave("Right", true)
}
2020-03-12 22:20:48 +00:00
case *ast.ExprBinaryPlus:
2020-05-13 18:05:15 +00:00
if nn == nil {
return
}
if !t.visitor.EnterNode(nn) {
return
}
if nn.Left != nil {
t.visitor.Enter("Left", true)
t.Traverse(nn.Left)
t.visitor.Leave("Left", true)
}
if nn.Right != nil {
t.visitor.Enter("Right", true)
t.Traverse(nn.Right)
t.visitor.Leave("Right", true)
}
2020-03-12 22:20:48 +00:00
case *ast.ExprBinaryPow:
2020-05-13 18:05:15 +00:00
if nn == nil {
return
}
if !t.visitor.EnterNode(nn) {
return
}
if nn.Left != nil {
t.visitor.Enter("Left", true)
t.Traverse(nn.Left)
t.visitor.Leave("Left", true)
}
if nn.Right != nil {
t.visitor.Enter("Right", true)
t.Traverse(nn.Right)
t.visitor.Leave("Right", true)
}
2020-03-12 22:20:48 +00:00
case *ast.ExprBinaryShiftLeft:
2020-05-13 18:05:15 +00:00
if nn == nil {
return
}
if !t.visitor.EnterNode(nn) {
return
}
if nn.Left != nil {
t.visitor.Enter("Left", true)
t.Traverse(nn.Left)
t.visitor.Leave("Left", true)
}
if nn.Right != nil {
t.visitor.Enter("Right", true)
t.Traverse(nn.Right)
t.visitor.Leave("Right", true)
}
2020-03-12 22:20:48 +00:00
case *ast.ExprBinaryShiftRight:
2020-05-13 18:05:15 +00:00
if nn == nil {
return
}
if !t.visitor.EnterNode(nn) {
return
}
if nn.Left != nil {
t.visitor.Enter("Left", true)
t.Traverse(nn.Left)
t.visitor.Leave("Left", true)
}
if nn.Right != nil {
t.visitor.Enter("Right", true)
t.Traverse(nn.Right)
t.visitor.Leave("Right", true)
}
2020-03-12 22:20:48 +00:00
case *ast.ExprBinarySmaller:
2020-05-13 18:05:15 +00:00
if nn == nil {
return
}
if !t.visitor.EnterNode(nn) {
return
}
if nn.Left != nil {
t.visitor.Enter("Left", true)
t.Traverse(nn.Left)
t.visitor.Leave("Left", true)
}
if nn.Right != nil {
t.visitor.Enter("Right", true)
t.Traverse(nn.Right)
t.visitor.Leave("Right", true)
}
2020-03-12 22:20:48 +00:00
case *ast.ExprBinarySmallerOrEqual:
2020-05-13 18:05:15 +00:00
if nn == nil {
return
}
if !t.visitor.EnterNode(nn) {
return
}
if nn.Left != nil {
t.visitor.Enter("Left", true)
t.Traverse(nn.Left)
t.visitor.Leave("Left", true)
}
if nn.Right != nil {
t.visitor.Enter("Right", true)
t.Traverse(nn.Right)
t.visitor.Leave("Right", true)
}
2020-03-12 22:20:48 +00:00
case *ast.ExprBinarySpaceship:
2020-05-13 18:05:15 +00:00
if nn == nil {
return
}
if !t.visitor.EnterNode(nn) {
return
}
if nn.Left != nil {
t.visitor.Enter("Left", true)
t.Traverse(nn.Left)
t.visitor.Leave("Left", true)
}
if nn.Right != nil {
t.visitor.Enter("Right", true)
t.Traverse(nn.Right)
t.visitor.Leave("Right", true)
}
2020-03-12 22:20:48 +00:00
case *ast.ExprCastArray:
2020-05-13 18:05:15 +00:00
if nn == nil {
return
}
if !t.visitor.EnterNode(nn) {
return
}
if nn.Expr != nil {
t.visitor.Enter("Expr", true)
t.Traverse(nn.Expr)
t.visitor.Leave("Expr", true)
}
2020-03-12 22:20:48 +00:00
case *ast.ExprCastBool:
2020-05-13 18:05:15 +00:00
if nn == nil {
return
}
if !t.visitor.EnterNode(nn) {
return
}
if nn.Expr != nil {
t.visitor.Enter("Expr", true)
t.Traverse(nn.Expr)
t.visitor.Leave("Expr", true)
}
2020-03-12 22:20:48 +00:00
case *ast.ExprCastDouble:
2020-05-13 18:05:15 +00:00
if nn == nil {
return
}
if !t.visitor.EnterNode(nn) {
return
}
if nn.Expr != nil {
t.visitor.Enter("Expr", true)
t.Traverse(nn.Expr)
t.visitor.Leave("Expr", true)
}
2020-03-12 22:20:48 +00:00
case *ast.ExprCastInt:
2020-05-13 18:05:15 +00:00
if nn == nil {
return
}
if !t.visitor.EnterNode(nn) {
return
}
if nn.Expr != nil {
t.visitor.Enter("Expr", true)
t.Traverse(nn.Expr)
t.visitor.Leave("Expr", true)
}
2020-03-12 22:20:48 +00:00
case *ast.ExprCastObject:
2020-05-13 18:05:15 +00:00
if nn == nil {
return
}
if !t.visitor.EnterNode(nn) {
return
}
if nn.Expr != nil {
t.visitor.Enter("Expr", true)
t.Traverse(nn.Expr)
t.visitor.Leave("Expr", true)
}
2020-03-12 22:20:48 +00:00
case *ast.ExprCastString:
2020-05-13 18:05:15 +00:00
if nn == nil {
return
}
if !t.visitor.EnterNode(nn) {
return
}
if nn.Expr != nil {
t.visitor.Enter("Expr", true)
t.Traverse(nn.Expr)
t.visitor.Leave("Expr", true)
}
2020-03-12 22:20:48 +00:00
case *ast.ExprCastUnset:
2020-05-13 18:05:15 +00:00
if nn == nil {
return
}
if !t.visitor.EnterNode(nn) {
return
}
if nn.Expr != nil {
t.visitor.Enter("Expr", true)
t.Traverse(nn.Expr)
t.visitor.Leave("Expr", true)
}
2020-03-12 22:20:48 +00:00
case *ast.ScalarDnumber:
2020-05-13 18:05:15 +00:00
if nn == nil {
return
}
if !t.visitor.EnterNode(nn) {
return
}
2020-03-12 22:20:48 +00:00
case *ast.ScalarEncapsed:
2020-05-13 18:05:15 +00:00
if nn == nil {
return
}
if !t.visitor.EnterNode(nn) {
return
}
if nn.Parts != nil {
t.visitor.Enter("Parts", false)
for _, c := range nn.Parts {
t.Traverse(c)
}
t.visitor.Leave("Parts", false)
}
2020-03-12 22:20:48 +00:00
case *ast.ScalarEncapsedStringPart:
2020-05-13 18:05:15 +00:00
if nn == nil {
return
}
if !t.visitor.EnterNode(nn) {
return
}
2020-03-12 22:20:48 +00:00
case *ast.ScalarHeredoc:
2020-05-13 18:05:15 +00:00
if nn == nil {
return
}
if !t.visitor.EnterNode(nn) {
return
}
if nn.Parts != nil {
t.visitor.Enter("Parts", false)
for _, c := range nn.Parts {
t.Traverse(c)
}
t.visitor.Leave("Parts", false)
}
2020-03-12 22:20:48 +00:00
case *ast.ScalarLnumber:
2020-05-13 18:05:15 +00:00
if nn == nil {
return
}
if !t.visitor.EnterNode(nn) {
return
}
2020-03-12 22:20:48 +00:00
case *ast.ScalarMagicConstant:
2020-05-13 18:05:15 +00:00
if nn == nil {
return
}
if !t.visitor.EnterNode(nn) {
return
}
2020-03-12 22:20:48 +00:00
case *ast.ScalarString:
2020-05-13 18:05:15 +00:00
if nn == nil {
return
}
if !t.visitor.EnterNode(nn) {
return
}
2020-05-17 20:13:14 +00:00
case *ast.NameName:
if nn == nil {
return
}
if !t.visitor.EnterNode(nn) {
return
}
if nn.Parts != nil {
t.visitor.Enter("Parts", false)
for _, c := range nn.Parts {
t.Traverse(c)
}
t.visitor.Leave("Parts", false)
}
case *ast.NameFullyQualified:
if nn == nil {
return
}
if !t.visitor.EnterNode(nn) {
return
}
if nn.Parts != nil {
t.visitor.Enter("Parts", false)
for _, c := range nn.Parts {
t.Traverse(c)
}
t.visitor.Leave("Parts", false)
}
case *ast.NameRelative:
if nn == nil {
return
}
if !t.visitor.EnterNode(nn) {
return
}
if nn.Parts != nil {
t.visitor.Enter("Parts", false)
for _, c := range nn.Parts {
t.Traverse(c)
}
t.visitor.Leave("Parts", false)
}
case *ast.NameNamePart:
if nn == nil {
return
}
if !t.visitor.EnterNode(nn) {
return
}
case *ast.ParserBrackets:
if nn == nil {
return
}
if !t.visitor.EnterNode(nn) {
return
}
if nn.Child != nil {
t.visitor.Enter("Child", true)
t.Traverse(nn.Child)
t.visitor.Leave("Child", true)
}
2020-05-13 18:05:15 +00:00
default:
panic("unexpected type of node")
2020-03-12 22:20:48 +00:00
}
t.visitor.LeaveNode(n)
}