25877adda4
- Improved performance (can short circuit/not continue when done) - Backwards compatible because added interfaces - Now generating the implementation for easier updates
2425 lines
34 KiB
Go
2425 lines
34 KiB
Go
// Code generated by "go generate go run traverser_gen.go"; DO NOT EDIT.
|
|
|
|
package traverser
|
|
|
|
import (
|
|
"github.com/VKCOM/php-parser/pkg/ast"
|
|
// Importing packages here, so that go mod tidy does not remove the dependency on it.
|
|
// It is used in traverser_gen.go but that is ignored with go mod tidy.
|
|
"golang.org/x/tools/go/packages"
|
|
)
|
|
|
|
func (t *Traverser) Root(n *ast.Root) {
|
|
if !t.checkEntrance(n) {
|
|
return
|
|
}
|
|
|
|
n.Accept(t.v)
|
|
|
|
for _, nn := range n.Stmts {
|
|
nn.Accept(t)
|
|
}
|
|
|
|
t.leave(n)
|
|
}
|
|
|
|
func (t *Traverser) Nullable(n *ast.Nullable) {
|
|
if !t.checkEntrance(n) {
|
|
return
|
|
}
|
|
|
|
n.Accept(t.v)
|
|
|
|
t.Traverse(n.Expr)
|
|
|
|
t.leave(n)
|
|
}
|
|
|
|
func (t *Traverser) Union(n *ast.Union) {
|
|
if !t.checkEntrance(n) {
|
|
return
|
|
}
|
|
|
|
n.Accept(t.v)
|
|
|
|
for _, nn := range n.Types {
|
|
nn.Accept(t)
|
|
}
|
|
|
|
t.leave(n)
|
|
}
|
|
|
|
func (t *Traverser) Intersection(n *ast.Intersection) {
|
|
if !t.checkEntrance(n) {
|
|
return
|
|
}
|
|
|
|
n.Accept(t.v)
|
|
|
|
for _, nn := range n.Types {
|
|
nn.Accept(t)
|
|
}
|
|
|
|
t.leave(n)
|
|
}
|
|
|
|
func (t *Traverser) Parameter(n *ast.Parameter) {
|
|
if !t.checkEntrance(n) {
|
|
return
|
|
}
|
|
|
|
n.Accept(t.v)
|
|
|
|
for _, nn := range n.AttrGroups {
|
|
nn.Accept(t)
|
|
}
|
|
|
|
t.Traverse(n.DefaultValue)
|
|
|
|
for _, nn := range n.Modifiers {
|
|
nn.Accept(t)
|
|
}
|
|
|
|
t.Traverse(n.Type)
|
|
|
|
t.Traverse(n.Var)
|
|
|
|
t.leave(n)
|
|
}
|
|
|
|
func (t *Traverser) Identifier(n *ast.Identifier) {
|
|
if !t.checkEntrance(n) {
|
|
return
|
|
}
|
|
|
|
n.Accept(t.v)
|
|
|
|
t.leave(n)
|
|
}
|
|
|
|
func (t *Traverser) Argument(n *ast.Argument) {
|
|
if !t.checkEntrance(n) {
|
|
return
|
|
}
|
|
|
|
n.Accept(t.v)
|
|
|
|
t.Traverse(n.Expr)
|
|
|
|
t.Traverse(n.Name)
|
|
|
|
t.leave(n)
|
|
}
|
|
|
|
func (t *Traverser) Attribute(n *ast.Attribute) {
|
|
if !t.checkEntrance(n) {
|
|
return
|
|
}
|
|
|
|
n.Accept(t.v)
|
|
|
|
for _, nn := range n.Args {
|
|
nn.Accept(t)
|
|
}
|
|
|
|
t.Traverse(n.Name)
|
|
|
|
t.leave(n)
|
|
}
|
|
|
|
func (t *Traverser) AttributeGroup(n *ast.AttributeGroup) {
|
|
if !t.checkEntrance(n) {
|
|
return
|
|
}
|
|
|
|
n.Accept(t.v)
|
|
|
|
for _, nn := range n.Attrs {
|
|
nn.Accept(t)
|
|
}
|
|
|
|
t.leave(n)
|
|
}
|
|
|
|
func (t *Traverser) ScalarDnumber(n *ast.ScalarDnumber) {
|
|
if !t.checkEntrance(n) {
|
|
return
|
|
}
|
|
|
|
n.Accept(t.v)
|
|
|
|
t.leave(n)
|
|
}
|
|
|
|
func (t *Traverser) ScalarEncapsed(n *ast.ScalarEncapsed) {
|
|
if !t.checkEntrance(n) {
|
|
return
|
|
}
|
|
|
|
n.Accept(t.v)
|
|
|
|
for _, nn := range n.Parts {
|
|
nn.Accept(t)
|
|
}
|
|
|
|
t.leave(n)
|
|
}
|
|
|
|
func (t *Traverser) ScalarEncapsedStringPart(n *ast.ScalarEncapsedStringPart) {
|
|
if !t.checkEntrance(n) {
|
|
return
|
|
}
|
|
|
|
n.Accept(t.v)
|
|
|
|
t.leave(n)
|
|
}
|
|
|
|
func (t *Traverser) ScalarEncapsedStringVar(n *ast.ScalarEncapsedStringVar) {
|
|
if !t.checkEntrance(n) {
|
|
return
|
|
}
|
|
|
|
n.Accept(t.v)
|
|
|
|
t.Traverse(n.Dim)
|
|
|
|
t.Traverse(n.Name)
|
|
|
|
t.leave(n)
|
|
}
|
|
|
|
func (t *Traverser) ScalarEncapsedStringBrackets(n *ast.ScalarEncapsedStringBrackets) {
|
|
if !t.checkEntrance(n) {
|
|
return
|
|
}
|
|
|
|
n.Accept(t.v)
|
|
|
|
t.Traverse(n.Var)
|
|
|
|
t.leave(n)
|
|
}
|
|
|
|
func (t *Traverser) ScalarHeredoc(n *ast.ScalarHeredoc) {
|
|
if !t.checkEntrance(n) {
|
|
return
|
|
}
|
|
|
|
n.Accept(t.v)
|
|
|
|
for _, nn := range n.Parts {
|
|
nn.Accept(t)
|
|
}
|
|
|
|
t.leave(n)
|
|
}
|
|
|
|
func (t *Traverser) ScalarLnumber(n *ast.ScalarLnumber) {
|
|
if !t.checkEntrance(n) {
|
|
return
|
|
}
|
|
|
|
n.Accept(t.v)
|
|
|
|
t.leave(n)
|
|
}
|
|
|
|
func (t *Traverser) ScalarMagicConstant(n *ast.ScalarMagicConstant) {
|
|
if !t.checkEntrance(n) {
|
|
return
|
|
}
|
|
|
|
n.Accept(t.v)
|
|
|
|
t.leave(n)
|
|
}
|
|
|
|
func (t *Traverser) ScalarString(n *ast.ScalarString) {
|
|
if !t.checkEntrance(n) {
|
|
return
|
|
}
|
|
|
|
n.Accept(t.v)
|
|
|
|
t.leave(n)
|
|
}
|
|
|
|
func (t *Traverser) StmtBreak(n *ast.StmtBreak) {
|
|
if !t.checkEntrance(n) {
|
|
return
|
|
}
|
|
|
|
n.Accept(t.v)
|
|
|
|
t.Traverse(n.Expr)
|
|
|
|
t.leave(n)
|
|
}
|
|
|
|
func (t *Traverser) StmtCase(n *ast.StmtCase) {
|
|
if !t.checkEntrance(n) {
|
|
return
|
|
}
|
|
|
|
n.Accept(t.v)
|
|
|
|
t.Traverse(n.Cond)
|
|
|
|
for _, nn := range n.Stmts {
|
|
nn.Accept(t)
|
|
}
|
|
|
|
t.leave(n)
|
|
}
|
|
|
|
func (t *Traverser) StmtCatch(n *ast.StmtCatch) {
|
|
if !t.checkEntrance(n) {
|
|
return
|
|
}
|
|
|
|
n.Accept(t.v)
|
|
|
|
for _, nn := range n.Stmts {
|
|
nn.Accept(t)
|
|
}
|
|
|
|
for _, nn := range n.Types {
|
|
nn.Accept(t)
|
|
}
|
|
|
|
t.Traverse(n.Var)
|
|
|
|
t.leave(n)
|
|
}
|
|
|
|
func (t *Traverser) StmtEnum(n *ast.StmtEnum) {
|
|
if !t.checkEntrance(n) {
|
|
return
|
|
}
|
|
|
|
n.Accept(t.v)
|
|
|
|
for _, nn := range n.AttrGroups {
|
|
nn.Accept(t)
|
|
}
|
|
|
|
for _, nn := range n.Implements {
|
|
nn.Accept(t)
|
|
}
|
|
|
|
t.Traverse(n.Name)
|
|
|
|
for _, nn := range n.Stmts {
|
|
nn.Accept(t)
|
|
}
|
|
|
|
t.Traverse(n.Type)
|
|
|
|
t.leave(n)
|
|
}
|
|
|
|
func (t *Traverser) EnumCase(n *ast.EnumCase) {
|
|
if !t.checkEntrance(n) {
|
|
return
|
|
}
|
|
|
|
n.Accept(t.v)
|
|
|
|
for _, nn := range n.AttrGroups {
|
|
nn.Accept(t)
|
|
}
|
|
|
|
t.Traverse(n.Expr)
|
|
|
|
t.Traverse(n.Name)
|
|
|
|
t.leave(n)
|
|
}
|
|
|
|
func (t *Traverser) StmtClass(n *ast.StmtClass) {
|
|
if !t.checkEntrance(n) {
|
|
return
|
|
}
|
|
|
|
n.Accept(t.v)
|
|
|
|
for _, nn := range n.Args {
|
|
nn.Accept(t)
|
|
}
|
|
|
|
for _, nn := range n.AttrGroups {
|
|
nn.Accept(t)
|
|
}
|
|
|
|
t.Traverse(n.Extends)
|
|
|
|
for _, nn := range n.Implements {
|
|
nn.Accept(t)
|
|
}
|
|
|
|
for _, nn := range n.Modifiers {
|
|
nn.Accept(t)
|
|
}
|
|
|
|
t.Traverse(n.Name)
|
|
|
|
for _, nn := range n.Stmts {
|
|
nn.Accept(t)
|
|
}
|
|
|
|
t.leave(n)
|
|
}
|
|
|
|
func (t *Traverser) StmtClassConstList(n *ast.StmtClassConstList) {
|
|
if !t.checkEntrance(n) {
|
|
return
|
|
}
|
|
|
|
n.Accept(t.v)
|
|
|
|
for _, nn := range n.AttrGroups {
|
|
nn.Accept(t)
|
|
}
|
|
|
|
for _, nn := range n.Consts {
|
|
nn.Accept(t)
|
|
}
|
|
|
|
for _, nn := range n.Modifiers {
|
|
nn.Accept(t)
|
|
}
|
|
|
|
t.leave(n)
|
|
}
|
|
|
|
func (t *Traverser) StmtClassMethod(n *ast.StmtClassMethod) {
|
|
if !t.checkEntrance(n) {
|
|
return
|
|
}
|
|
|
|
n.Accept(t.v)
|
|
|
|
for _, nn := range n.AttrGroups {
|
|
nn.Accept(t)
|
|
}
|
|
|
|
for _, nn := range n.Modifiers {
|
|
nn.Accept(t)
|
|
}
|
|
|
|
t.Traverse(n.Name)
|
|
|
|
for _, nn := range n.Params {
|
|
nn.Accept(t)
|
|
}
|
|
|
|
t.Traverse(n.ReturnType)
|
|
|
|
t.Traverse(n.Stmt)
|
|
|
|
t.leave(n)
|
|
}
|
|
|
|
func (t *Traverser) StmtConstList(n *ast.StmtConstList) {
|
|
if !t.checkEntrance(n) {
|
|
return
|
|
}
|
|
|
|
n.Accept(t.v)
|
|
|
|
for _, nn := range n.Consts {
|
|
nn.Accept(t)
|
|
}
|
|
|
|
t.leave(n)
|
|
}
|
|
|
|
func (t *Traverser) StmtConstant(n *ast.StmtConstant) {
|
|
if !t.checkEntrance(n) {
|
|
return
|
|
}
|
|
|
|
n.Accept(t.v)
|
|
|
|
t.Traverse(n.Expr)
|
|
|
|
t.Traverse(n.Name)
|
|
|
|
t.leave(n)
|
|
}
|
|
|
|
func (t *Traverser) StmtContinue(n *ast.StmtContinue) {
|
|
if !t.checkEntrance(n) {
|
|
return
|
|
}
|
|
|
|
n.Accept(t.v)
|
|
|
|
t.Traverse(n.Expr)
|
|
|
|
t.leave(n)
|
|
}
|
|
|
|
func (t *Traverser) StmtDeclare(n *ast.StmtDeclare) {
|
|
if !t.checkEntrance(n) {
|
|
return
|
|
}
|
|
|
|
n.Accept(t.v)
|
|
|
|
for _, nn := range n.Consts {
|
|
nn.Accept(t)
|
|
}
|
|
|
|
t.Traverse(n.Stmt)
|
|
|
|
t.leave(n)
|
|
}
|
|
|
|
func (t *Traverser) StmtDefault(n *ast.StmtDefault) {
|
|
if !t.checkEntrance(n) {
|
|
return
|
|
}
|
|
|
|
n.Accept(t.v)
|
|
|
|
for _, nn := range n.Stmts {
|
|
nn.Accept(t)
|
|
}
|
|
|
|
t.leave(n)
|
|
}
|
|
|
|
func (t *Traverser) StmtDo(n *ast.StmtDo) {
|
|
if !t.checkEntrance(n) {
|
|
return
|
|
}
|
|
|
|
n.Accept(t.v)
|
|
|
|
t.Traverse(n.Cond)
|
|
|
|
t.Traverse(n.Stmt)
|
|
|
|
t.leave(n)
|
|
}
|
|
|
|
func (t *Traverser) StmtEcho(n *ast.StmtEcho) {
|
|
if !t.checkEntrance(n) {
|
|
return
|
|
}
|
|
|
|
n.Accept(t.v)
|
|
|
|
for _, nn := range n.Exprs {
|
|
nn.Accept(t)
|
|
}
|
|
|
|
t.leave(n)
|
|
}
|
|
|
|
func (t *Traverser) StmtElse(n *ast.StmtElse) {
|
|
if !t.checkEntrance(n) {
|
|
return
|
|
}
|
|
|
|
n.Accept(t.v)
|
|
|
|
t.Traverse(n.Stmt)
|
|
|
|
t.leave(n)
|
|
}
|
|
|
|
func (t *Traverser) StmtElseIf(n *ast.StmtElseIf) {
|
|
if !t.checkEntrance(n) {
|
|
return
|
|
}
|
|
|
|
n.Accept(t.v)
|
|
|
|
t.Traverse(n.Cond)
|
|
|
|
t.Traverse(n.Stmt)
|
|
|
|
t.leave(n)
|
|
}
|
|
|
|
func (t *Traverser) StmtExpression(n *ast.StmtExpression) {
|
|
if !t.checkEntrance(n) {
|
|
return
|
|
}
|
|
|
|
n.Accept(t.v)
|
|
|
|
t.Traverse(n.Expr)
|
|
|
|
t.leave(n)
|
|
}
|
|
|
|
func (t *Traverser) StmtFinally(n *ast.StmtFinally) {
|
|
if !t.checkEntrance(n) {
|
|
return
|
|
}
|
|
|
|
n.Accept(t.v)
|
|
|
|
for _, nn := range n.Stmts {
|
|
nn.Accept(t)
|
|
}
|
|
|
|
t.leave(n)
|
|
}
|
|
|
|
func (t *Traverser) StmtFor(n *ast.StmtFor) {
|
|
if !t.checkEntrance(n) {
|
|
return
|
|
}
|
|
|
|
n.Accept(t.v)
|
|
|
|
for _, nn := range n.Cond {
|
|
nn.Accept(t)
|
|
}
|
|
|
|
for _, nn := range n.Init {
|
|
nn.Accept(t)
|
|
}
|
|
|
|
for _, nn := range n.Loop {
|
|
nn.Accept(t)
|
|
}
|
|
|
|
t.Traverse(n.Stmt)
|
|
|
|
t.leave(n)
|
|
}
|
|
|
|
func (t *Traverser) StmtForeach(n *ast.StmtForeach) {
|
|
if !t.checkEntrance(n) {
|
|
return
|
|
}
|
|
|
|
n.Accept(t.v)
|
|
|
|
t.Traverse(n.Expr)
|
|
|
|
t.Traverse(n.Key)
|
|
|
|
t.Traverse(n.Stmt)
|
|
|
|
t.Traverse(n.Var)
|
|
|
|
t.leave(n)
|
|
}
|
|
|
|
func (t *Traverser) StmtFunction(n *ast.StmtFunction) {
|
|
if !t.checkEntrance(n) {
|
|
return
|
|
}
|
|
|
|
n.Accept(t.v)
|
|
|
|
for _, nn := range n.AttrGroups {
|
|
nn.Accept(t)
|
|
}
|
|
|
|
t.Traverse(n.Name)
|
|
|
|
for _, nn := range n.Params {
|
|
nn.Accept(t)
|
|
}
|
|
|
|
t.Traverse(n.ReturnType)
|
|
|
|
for _, nn := range n.Stmts {
|
|
nn.Accept(t)
|
|
}
|
|
|
|
t.leave(n)
|
|
}
|
|
|
|
func (t *Traverser) StmtGlobal(n *ast.StmtGlobal) {
|
|
if !t.checkEntrance(n) {
|
|
return
|
|
}
|
|
|
|
n.Accept(t.v)
|
|
|
|
for _, nn := range n.Vars {
|
|
nn.Accept(t)
|
|
}
|
|
|
|
t.leave(n)
|
|
}
|
|
|
|
func (t *Traverser) StmtGoto(n *ast.StmtGoto) {
|
|
if !t.checkEntrance(n) {
|
|
return
|
|
}
|
|
|
|
n.Accept(t.v)
|
|
|
|
t.Traverse(n.Label)
|
|
|
|
t.leave(n)
|
|
}
|
|
|
|
func (t *Traverser) StmtHaltCompiler(n *ast.StmtHaltCompiler) {
|
|
if !t.checkEntrance(n) {
|
|
return
|
|
}
|
|
|
|
n.Accept(t.v)
|
|
|
|
t.leave(n)
|
|
}
|
|
|
|
func (t *Traverser) StmtIf(n *ast.StmtIf) {
|
|
if !t.checkEntrance(n) {
|
|
return
|
|
}
|
|
|
|
n.Accept(t.v)
|
|
|
|
t.Traverse(n.Cond)
|
|
|
|
t.Traverse(n.Else)
|
|
|
|
for _, nn := range n.ElseIf {
|
|
nn.Accept(t)
|
|
}
|
|
|
|
t.Traverse(n.Stmt)
|
|
|
|
t.leave(n)
|
|
}
|
|
|
|
func (t *Traverser) StmtInlineHtml(n *ast.StmtInlineHtml) {
|
|
if !t.checkEntrance(n) {
|
|
return
|
|
}
|
|
|
|
n.Accept(t.v)
|
|
|
|
t.leave(n)
|
|
}
|
|
|
|
func (t *Traverser) StmtInterface(n *ast.StmtInterface) {
|
|
if !t.checkEntrance(n) {
|
|
return
|
|
}
|
|
|
|
n.Accept(t.v)
|
|
|
|
for _, nn := range n.AttrGroups {
|
|
nn.Accept(t)
|
|
}
|
|
|
|
for _, nn := range n.Extends {
|
|
nn.Accept(t)
|
|
}
|
|
|
|
t.Traverse(n.Name)
|
|
|
|
for _, nn := range n.Stmts {
|
|
nn.Accept(t)
|
|
}
|
|
|
|
t.leave(n)
|
|
}
|
|
|
|
func (t *Traverser) StmtLabel(n *ast.StmtLabel) {
|
|
if !t.checkEntrance(n) {
|
|
return
|
|
}
|
|
|
|
n.Accept(t.v)
|
|
|
|
t.Traverse(n.Name)
|
|
|
|
t.leave(n)
|
|
}
|
|
|
|
func (t *Traverser) StmtNamespace(n *ast.StmtNamespace) {
|
|
if !t.checkEntrance(n) {
|
|
return
|
|
}
|
|
|
|
n.Accept(t.v)
|
|
|
|
t.Traverse(n.Name)
|
|
|
|
for _, nn := range n.Stmts {
|
|
nn.Accept(t)
|
|
}
|
|
|
|
t.leave(n)
|
|
}
|
|
|
|
func (t *Traverser) StmtNop(n *ast.StmtNop) {
|
|
if !t.checkEntrance(n) {
|
|
return
|
|
}
|
|
|
|
n.Accept(t.v)
|
|
|
|
t.leave(n)
|
|
}
|
|
|
|
func (t *Traverser) StmtProperty(n *ast.StmtProperty) {
|
|
if !t.checkEntrance(n) {
|
|
return
|
|
}
|
|
|
|
n.Accept(t.v)
|
|
|
|
t.Traverse(n.Expr)
|
|
|
|
t.Traverse(n.Var)
|
|
|
|
t.leave(n)
|
|
}
|
|
|
|
func (t *Traverser) StmtPropertyList(n *ast.StmtPropertyList) {
|
|
if !t.checkEntrance(n) {
|
|
return
|
|
}
|
|
|
|
n.Accept(t.v)
|
|
|
|
for _, nn := range n.AttrGroups {
|
|
nn.Accept(t)
|
|
}
|
|
|
|
for _, nn := range n.Modifiers {
|
|
nn.Accept(t)
|
|
}
|
|
|
|
for _, nn := range n.Props {
|
|
nn.Accept(t)
|
|
}
|
|
|
|
t.Traverse(n.Type)
|
|
|
|
t.leave(n)
|
|
}
|
|
|
|
func (t *Traverser) StmtReturn(n *ast.StmtReturn) {
|
|
if !t.checkEntrance(n) {
|
|
return
|
|
}
|
|
|
|
n.Accept(t.v)
|
|
|
|
t.Traverse(n.Expr)
|
|
|
|
t.leave(n)
|
|
}
|
|
|
|
func (t *Traverser) StmtStatic(n *ast.StmtStatic) {
|
|
if !t.checkEntrance(n) {
|
|
return
|
|
}
|
|
|
|
n.Accept(t.v)
|
|
|
|
for _, nn := range n.Vars {
|
|
nn.Accept(t)
|
|
}
|
|
|
|
t.leave(n)
|
|
}
|
|
|
|
func (t *Traverser) StmtStaticVar(n *ast.StmtStaticVar) {
|
|
if !t.checkEntrance(n) {
|
|
return
|
|
}
|
|
|
|
n.Accept(t.v)
|
|
|
|
t.Traverse(n.Expr)
|
|
|
|
t.Traverse(n.Var)
|
|
|
|
t.leave(n)
|
|
}
|
|
|
|
func (t *Traverser) StmtStmtList(n *ast.StmtStmtList) {
|
|
if !t.checkEntrance(n) {
|
|
return
|
|
}
|
|
|
|
n.Accept(t.v)
|
|
|
|
for _, nn := range n.Stmts {
|
|
nn.Accept(t)
|
|
}
|
|
|
|
t.leave(n)
|
|
}
|
|
|
|
func (t *Traverser) StmtSwitch(n *ast.StmtSwitch) {
|
|
if !t.checkEntrance(n) {
|
|
return
|
|
}
|
|
|
|
n.Accept(t.v)
|
|
|
|
for _, nn := range n.Cases {
|
|
nn.Accept(t)
|
|
}
|
|
|
|
t.Traverse(n.Cond)
|
|
|
|
t.leave(n)
|
|
}
|
|
|
|
func (t *Traverser) StmtThrow(n *ast.StmtThrow) {
|
|
if !t.checkEntrance(n) {
|
|
return
|
|
}
|
|
|
|
n.Accept(t.v)
|
|
|
|
t.Traverse(n.Expr)
|
|
|
|
t.leave(n)
|
|
}
|
|
|
|
func (t *Traverser) StmtTrait(n *ast.StmtTrait) {
|
|
if !t.checkEntrance(n) {
|
|
return
|
|
}
|
|
|
|
n.Accept(t.v)
|
|
|
|
for _, nn := range n.AttrGroups {
|
|
nn.Accept(t)
|
|
}
|
|
|
|
t.Traverse(n.Name)
|
|
|
|
for _, nn := range n.Stmts {
|
|
nn.Accept(t)
|
|
}
|
|
|
|
t.leave(n)
|
|
}
|
|
|
|
func (t *Traverser) StmtTraitUse(n *ast.StmtTraitUse) {
|
|
if !t.checkEntrance(n) {
|
|
return
|
|
}
|
|
|
|
n.Accept(t.v)
|
|
|
|
for _, nn := range n.Adaptations {
|
|
nn.Accept(t)
|
|
}
|
|
|
|
for _, nn := range n.Traits {
|
|
nn.Accept(t)
|
|
}
|
|
|
|
t.leave(n)
|
|
}
|
|
|
|
func (t *Traverser) StmtTraitUseAlias(n *ast.StmtTraitUseAlias) {
|
|
if !t.checkEntrance(n) {
|
|
return
|
|
}
|
|
|
|
n.Accept(t.v)
|
|
|
|
t.Traverse(n.Alias)
|
|
|
|
t.Traverse(n.Method)
|
|
|
|
t.Traverse(n.Modifier)
|
|
|
|
t.Traverse(n.Trait)
|
|
|
|
t.leave(n)
|
|
}
|
|
|
|
func (t *Traverser) StmtTraitUsePrecedence(n *ast.StmtTraitUsePrecedence) {
|
|
if !t.checkEntrance(n) {
|
|
return
|
|
}
|
|
|
|
n.Accept(t.v)
|
|
|
|
for _, nn := range n.Insteadof {
|
|
nn.Accept(t)
|
|
}
|
|
|
|
t.Traverse(n.Method)
|
|
|
|
t.Traverse(n.Trait)
|
|
|
|
t.leave(n)
|
|
}
|
|
|
|
func (t *Traverser) StmtTry(n *ast.StmtTry) {
|
|
if !t.checkEntrance(n) {
|
|
return
|
|
}
|
|
|
|
n.Accept(t.v)
|
|
|
|
for _, nn := range n.Catches {
|
|
nn.Accept(t)
|
|
}
|
|
|
|
t.Traverse(n.Finally)
|
|
|
|
for _, nn := range n.Stmts {
|
|
nn.Accept(t)
|
|
}
|
|
|
|
t.leave(n)
|
|
}
|
|
|
|
func (t *Traverser) StmtUnset(n *ast.StmtUnset) {
|
|
if !t.checkEntrance(n) {
|
|
return
|
|
}
|
|
|
|
n.Accept(t.v)
|
|
|
|
for _, nn := range n.Vars {
|
|
nn.Accept(t)
|
|
}
|
|
|
|
t.leave(n)
|
|
}
|
|
|
|
func (t *Traverser) StmtUse(n *ast.StmtUseList) {
|
|
if !t.checkEntrance(n) {
|
|
return
|
|
}
|
|
|
|
n.Accept(t.v)
|
|
|
|
t.Traverse(n.Type)
|
|
|
|
for _, nn := range n.Uses {
|
|
nn.Accept(t)
|
|
}
|
|
|
|
t.leave(n)
|
|
}
|
|
|
|
func (t *Traverser) StmtGroupUse(n *ast.StmtGroupUseList) {
|
|
if !t.checkEntrance(n) {
|
|
return
|
|
}
|
|
|
|
n.Accept(t.v)
|
|
|
|
t.Traverse(n.Prefix)
|
|
|
|
t.Traverse(n.Type)
|
|
|
|
for _, nn := range n.Uses {
|
|
nn.Accept(t)
|
|
}
|
|
|
|
t.leave(n)
|
|
}
|
|
|
|
func (t *Traverser) StmtUseDeclaration(n *ast.StmtUse) {
|
|
if !t.checkEntrance(n) {
|
|
return
|
|
}
|
|
|
|
n.Accept(t.v)
|
|
|
|
t.Traverse(n.Alias)
|
|
|
|
t.Traverse(n.Type)
|
|
|
|
t.Traverse(n.Use)
|
|
|
|
t.leave(n)
|
|
}
|
|
|
|
func (t *Traverser) StmtWhile(n *ast.StmtWhile) {
|
|
if !t.checkEntrance(n) {
|
|
return
|
|
}
|
|
|
|
n.Accept(t.v)
|
|
|
|
t.Traverse(n.Cond)
|
|
|
|
t.Traverse(n.Stmt)
|
|
|
|
t.leave(n)
|
|
}
|
|
|
|
func (t *Traverser) ExprArray(n *ast.ExprArray) {
|
|
if !t.checkEntrance(n) {
|
|
return
|
|
}
|
|
|
|
n.Accept(t.v)
|
|
|
|
for _, nn := range n.Items {
|
|
nn.Accept(t)
|
|
}
|
|
|
|
t.leave(n)
|
|
}
|
|
|
|
func (t *Traverser) ExprArrayDimFetch(n *ast.ExprArrayDimFetch) {
|
|
if !t.checkEntrance(n) {
|
|
return
|
|
}
|
|
|
|
n.Accept(t.v)
|
|
|
|
t.Traverse(n.Dim)
|
|
|
|
t.Traverse(n.Var)
|
|
|
|
t.leave(n)
|
|
}
|
|
|
|
func (t *Traverser) ExprArrayItem(n *ast.ExprArrayItem) {
|
|
if !t.checkEntrance(n) {
|
|
return
|
|
}
|
|
|
|
n.Accept(t.v)
|
|
|
|
t.Traverse(n.Key)
|
|
|
|
t.Traverse(n.Val)
|
|
|
|
t.leave(n)
|
|
}
|
|
|
|
func (t *Traverser) ExprArrowFunction(n *ast.ExprArrowFunction) {
|
|
if !t.checkEntrance(n) {
|
|
return
|
|
}
|
|
|
|
n.Accept(t.v)
|
|
|
|
for _, nn := range n.AttrGroups {
|
|
nn.Accept(t)
|
|
}
|
|
|
|
t.Traverse(n.Expr)
|
|
|
|
for _, nn := range n.Params {
|
|
nn.Accept(t)
|
|
}
|
|
|
|
t.Traverse(n.ReturnType)
|
|
|
|
t.leave(n)
|
|
}
|
|
|
|
func (t *Traverser) ExprBitwiseNot(n *ast.ExprBitwiseNot) {
|
|
if !t.checkEntrance(n) {
|
|
return
|
|
}
|
|
|
|
n.Accept(t.v)
|
|
|
|
t.Traverse(n.Expr)
|
|
|
|
t.leave(n)
|
|
}
|
|
|
|
func (t *Traverser) ExprBooleanNot(n *ast.ExprBooleanNot) {
|
|
if !t.checkEntrance(n) {
|
|
return
|
|
}
|
|
|
|
n.Accept(t.v)
|
|
|
|
t.Traverse(n.Expr)
|
|
|
|
t.leave(n)
|
|
}
|
|
|
|
func (t *Traverser) ExprBrackets(n *ast.ExprBrackets) {
|
|
if !t.checkEntrance(n) {
|
|
return
|
|
}
|
|
|
|
n.Accept(t.v)
|
|
|
|
t.Traverse(n.Expr)
|
|
|
|
t.leave(n)
|
|
}
|
|
|
|
func (t *Traverser) ExprClassConstFetch(n *ast.ExprClassConstFetch) {
|
|
if !t.checkEntrance(n) {
|
|
return
|
|
}
|
|
|
|
n.Accept(t.v)
|
|
|
|
t.Traverse(n.Class)
|
|
|
|
t.Traverse(n.Const)
|
|
|
|
t.leave(n)
|
|
}
|
|
|
|
func (t *Traverser) ExprClone(n *ast.ExprClone) {
|
|
if !t.checkEntrance(n) {
|
|
return
|
|
}
|
|
|
|
n.Accept(t.v)
|
|
|
|
t.Traverse(n.Expr)
|
|
|
|
t.leave(n)
|
|
}
|
|
|
|
func (t *Traverser) ExprClosure(n *ast.ExprClosure) {
|
|
if !t.checkEntrance(n) {
|
|
return
|
|
}
|
|
|
|
n.Accept(t.v)
|
|
|
|
for _, nn := range n.AttrGroups {
|
|
nn.Accept(t)
|
|
}
|
|
|
|
for _, nn := range n.Params {
|
|
nn.Accept(t)
|
|
}
|
|
|
|
t.Traverse(n.ReturnType)
|
|
|
|
for _, nn := range n.Stmts {
|
|
nn.Accept(t)
|
|
}
|
|
|
|
for _, nn := range n.Uses {
|
|
nn.Accept(t)
|
|
}
|
|
|
|
t.leave(n)
|
|
}
|
|
|
|
func (t *Traverser) ExprClosureUse(n *ast.ExprClosureUse) {
|
|
if !t.checkEntrance(n) {
|
|
return
|
|
}
|
|
|
|
n.Accept(t.v)
|
|
|
|
t.Traverse(n.Var)
|
|
|
|
t.leave(n)
|
|
}
|
|
|
|
func (t *Traverser) ExprConstFetch(n *ast.ExprConstFetch) {
|
|
if !t.checkEntrance(n) {
|
|
return
|
|
}
|
|
|
|
n.Accept(t.v)
|
|
|
|
t.Traverse(n.Const)
|
|
|
|
t.leave(n)
|
|
}
|
|
|
|
func (t *Traverser) ExprEmpty(n *ast.ExprEmpty) {
|
|
if !t.checkEntrance(n) {
|
|
return
|
|
}
|
|
|
|
n.Accept(t.v)
|
|
|
|
t.Traverse(n.Expr)
|
|
|
|
t.leave(n)
|
|
}
|
|
|
|
func (t *Traverser) ExprErrorSuppress(n *ast.ExprErrorSuppress) {
|
|
if !t.checkEntrance(n) {
|
|
return
|
|
}
|
|
|
|
n.Accept(t.v)
|
|
|
|
t.Traverse(n.Expr)
|
|
|
|
t.leave(n)
|
|
}
|
|
|
|
func (t *Traverser) ExprEval(n *ast.ExprEval) {
|
|
if !t.checkEntrance(n) {
|
|
return
|
|
}
|
|
|
|
n.Accept(t.v)
|
|
|
|
t.Traverse(n.Expr)
|
|
|
|
t.leave(n)
|
|
}
|
|
|
|
func (t *Traverser) ExprExit(n *ast.ExprExit) {
|
|
if !t.checkEntrance(n) {
|
|
return
|
|
}
|
|
|
|
n.Accept(t.v)
|
|
|
|
t.Traverse(n.Expr)
|
|
|
|
t.leave(n)
|
|
}
|
|
|
|
func (t *Traverser) ExprFunctionCall(n *ast.ExprFunctionCall) {
|
|
if !t.checkEntrance(n) {
|
|
return
|
|
}
|
|
|
|
n.Accept(t.v)
|
|
|
|
for _, nn := range n.Args {
|
|
nn.Accept(t)
|
|
}
|
|
|
|
t.Traverse(n.Function)
|
|
|
|
t.leave(n)
|
|
}
|
|
|
|
func (t *Traverser) ExprInclude(n *ast.ExprInclude) {
|
|
if !t.checkEntrance(n) {
|
|
return
|
|
}
|
|
|
|
n.Accept(t.v)
|
|
|
|
t.Traverse(n.Expr)
|
|
|
|
t.leave(n)
|
|
}
|
|
|
|
func (t *Traverser) ExprIncludeOnce(n *ast.ExprIncludeOnce) {
|
|
if !t.checkEntrance(n) {
|
|
return
|
|
}
|
|
|
|
n.Accept(t.v)
|
|
|
|
t.Traverse(n.Expr)
|
|
|
|
t.leave(n)
|
|
}
|
|
|
|
func (t *Traverser) ExprInstanceOf(n *ast.ExprInstanceOf) {
|
|
if !t.checkEntrance(n) {
|
|
return
|
|
}
|
|
|
|
n.Accept(t.v)
|
|
|
|
t.Traverse(n.Class)
|
|
|
|
t.Traverse(n.Expr)
|
|
|
|
t.leave(n)
|
|
}
|
|
|
|
func (t *Traverser) ExprIsset(n *ast.ExprIsset) {
|
|
if !t.checkEntrance(n) {
|
|
return
|
|
}
|
|
|
|
n.Accept(t.v)
|
|
|
|
for _, nn := range n.Vars {
|
|
nn.Accept(t)
|
|
}
|
|
|
|
t.leave(n)
|
|
}
|
|
|
|
func (t *Traverser) ExprList(n *ast.ExprList) {
|
|
if !t.checkEntrance(n) {
|
|
return
|
|
}
|
|
|
|
n.Accept(t.v)
|
|
|
|
for _, nn := range n.Items {
|
|
nn.Accept(t)
|
|
}
|
|
|
|
t.leave(n)
|
|
}
|
|
|
|
func (t *Traverser) ExprMethodCall(n *ast.ExprMethodCall) {
|
|
if !t.checkEntrance(n) {
|
|
return
|
|
}
|
|
|
|
n.Accept(t.v)
|
|
|
|
for _, nn := range n.Args {
|
|
nn.Accept(t)
|
|
}
|
|
|
|
t.Traverse(n.Method)
|
|
|
|
t.Traverse(n.Var)
|
|
|
|
t.leave(n)
|
|
}
|
|
|
|
func (t *Traverser) ExprNullsafeMethodCall(n *ast.ExprNullsafeMethodCall) {
|
|
if !t.checkEntrance(n) {
|
|
return
|
|
}
|
|
|
|
n.Accept(t.v)
|
|
|
|
for _, nn := range n.Args {
|
|
nn.Accept(t)
|
|
}
|
|
|
|
t.Traverse(n.Method)
|
|
|
|
t.Traverse(n.Var)
|
|
|
|
t.leave(n)
|
|
}
|
|
|
|
func (t *Traverser) ExprNew(n *ast.ExprNew) {
|
|
if !t.checkEntrance(n) {
|
|
return
|
|
}
|
|
|
|
n.Accept(t.v)
|
|
|
|
for _, nn := range n.Args {
|
|
nn.Accept(t)
|
|
}
|
|
|
|
t.Traverse(n.Class)
|
|
|
|
t.leave(n)
|
|
}
|
|
|
|
func (t *Traverser) ExprPostDec(n *ast.ExprPostDec) {
|
|
if !t.checkEntrance(n) {
|
|
return
|
|
}
|
|
|
|
n.Accept(t.v)
|
|
|
|
t.Traverse(n.Var)
|
|
|
|
t.leave(n)
|
|
}
|
|
|
|
func (t *Traverser) ExprPostInc(n *ast.ExprPostInc) {
|
|
if !t.checkEntrance(n) {
|
|
return
|
|
}
|
|
|
|
n.Accept(t.v)
|
|
|
|
t.Traverse(n.Var)
|
|
|
|
t.leave(n)
|
|
}
|
|
|
|
func (t *Traverser) ExprPreDec(n *ast.ExprPreDec) {
|
|
if !t.checkEntrance(n) {
|
|
return
|
|
}
|
|
|
|
n.Accept(t.v)
|
|
|
|
t.Traverse(n.Var)
|
|
|
|
t.leave(n)
|
|
}
|
|
|
|
func (t *Traverser) ExprPreInc(n *ast.ExprPreInc) {
|
|
if !t.checkEntrance(n) {
|
|
return
|
|
}
|
|
|
|
n.Accept(t.v)
|
|
|
|
t.Traverse(n.Var)
|
|
|
|
t.leave(n)
|
|
}
|
|
|
|
func (t *Traverser) ExprPrint(n *ast.ExprPrint) {
|
|
if !t.checkEntrance(n) {
|
|
return
|
|
}
|
|
|
|
n.Accept(t.v)
|
|
|
|
t.Traverse(n.Expr)
|
|
|
|
t.leave(n)
|
|
}
|
|
|
|
func (t *Traverser) ExprPropertyFetch(n *ast.ExprPropertyFetch) {
|
|
if !t.checkEntrance(n) {
|
|
return
|
|
}
|
|
|
|
n.Accept(t.v)
|
|
|
|
t.Traverse(n.Prop)
|
|
|
|
t.Traverse(n.Var)
|
|
|
|
t.leave(n)
|
|
}
|
|
|
|
func (t *Traverser) ExprNullsafePropertyFetch(n *ast.ExprNullsafePropertyFetch) {
|
|
if !t.checkEntrance(n) {
|
|
return
|
|
}
|
|
|
|
n.Accept(t.v)
|
|
|
|
t.Traverse(n.Prop)
|
|
|
|
t.Traverse(n.Var)
|
|
|
|
t.leave(n)
|
|
}
|
|
|
|
func (t *Traverser) ExprRequire(n *ast.ExprRequire) {
|
|
if !t.checkEntrance(n) {
|
|
return
|
|
}
|
|
|
|
n.Accept(t.v)
|
|
|
|
t.Traverse(n.Expr)
|
|
|
|
t.leave(n)
|
|
}
|
|
|
|
func (t *Traverser) ExprRequireOnce(n *ast.ExprRequireOnce) {
|
|
if !t.checkEntrance(n) {
|
|
return
|
|
}
|
|
|
|
n.Accept(t.v)
|
|
|
|
t.Traverse(n.Expr)
|
|
|
|
t.leave(n)
|
|
}
|
|
|
|
func (t *Traverser) ExprShellExec(n *ast.ExprShellExec) {
|
|
if !t.checkEntrance(n) {
|
|
return
|
|
}
|
|
|
|
n.Accept(t.v)
|
|
|
|
for _, nn := range n.Parts {
|
|
nn.Accept(t)
|
|
}
|
|
|
|
t.leave(n)
|
|
}
|
|
|
|
func (t *Traverser) ExprStaticCall(n *ast.ExprStaticCall) {
|
|
if !t.checkEntrance(n) {
|
|
return
|
|
}
|
|
|
|
n.Accept(t.v)
|
|
|
|
for _, nn := range n.Args {
|
|
nn.Accept(t)
|
|
}
|
|
|
|
t.Traverse(n.Call)
|
|
|
|
t.Traverse(n.Class)
|
|
|
|
t.leave(n)
|
|
}
|
|
|
|
func (t *Traverser) ExprStaticPropertyFetch(n *ast.ExprStaticPropertyFetch) {
|
|
if !t.checkEntrance(n) {
|
|
return
|
|
}
|
|
|
|
n.Accept(t.v)
|
|
|
|
t.Traverse(n.Class)
|
|
|
|
t.Traverse(n.Prop)
|
|
|
|
t.leave(n)
|
|
}
|
|
|
|
func (t *Traverser) ExprTernary(n *ast.ExprTernary) {
|
|
if !t.checkEntrance(n) {
|
|
return
|
|
}
|
|
|
|
n.Accept(t.v)
|
|
|
|
t.Traverse(n.Cond)
|
|
|
|
t.Traverse(n.IfFalse)
|
|
|
|
t.Traverse(n.IfTrue)
|
|
|
|
t.leave(n)
|
|
}
|
|
|
|
func (t *Traverser) ExprUnaryMinus(n *ast.ExprUnaryMinus) {
|
|
if !t.checkEntrance(n) {
|
|
return
|
|
}
|
|
|
|
n.Accept(t.v)
|
|
|
|
t.Traverse(n.Expr)
|
|
|
|
t.leave(n)
|
|
}
|
|
|
|
func (t *Traverser) ExprUnaryPlus(n *ast.ExprUnaryPlus) {
|
|
if !t.checkEntrance(n) {
|
|
return
|
|
}
|
|
|
|
n.Accept(t.v)
|
|
|
|
t.Traverse(n.Expr)
|
|
|
|
t.leave(n)
|
|
}
|
|
|
|
func (t *Traverser) ExprVariable(n *ast.ExprVariable) {
|
|
if !t.checkEntrance(n) {
|
|
return
|
|
}
|
|
|
|
n.Accept(t.v)
|
|
|
|
t.Traverse(n.Name)
|
|
|
|
t.leave(n)
|
|
}
|
|
|
|
func (t *Traverser) ExprYield(n *ast.ExprYield) {
|
|
if !t.checkEntrance(n) {
|
|
return
|
|
}
|
|
|
|
n.Accept(t.v)
|
|
|
|
t.Traverse(n.Key)
|
|
|
|
t.Traverse(n.Val)
|
|
|
|
t.leave(n)
|
|
}
|
|
|
|
func (t *Traverser) ExprYieldFrom(n *ast.ExprYieldFrom) {
|
|
if !t.checkEntrance(n) {
|
|
return
|
|
}
|
|
|
|
n.Accept(t.v)
|
|
|
|
t.Traverse(n.Expr)
|
|
|
|
t.leave(n)
|
|
}
|
|
|
|
func (t *Traverser) ExprCastArray(n *ast.ExprCastArray) {
|
|
if !t.checkEntrance(n) {
|
|
return
|
|
}
|
|
|
|
n.Accept(t.v)
|
|
|
|
t.Traverse(n.Expr)
|
|
|
|
t.leave(n)
|
|
}
|
|
|
|
func (t *Traverser) ExprCastBool(n *ast.ExprCastBool) {
|
|
if !t.checkEntrance(n) {
|
|
return
|
|
}
|
|
|
|
n.Accept(t.v)
|
|
|
|
t.Traverse(n.Expr)
|
|
|
|
t.leave(n)
|
|
}
|
|
|
|
func (t *Traverser) ExprCastDouble(n *ast.ExprCastDouble) {
|
|
if !t.checkEntrance(n) {
|
|
return
|
|
}
|
|
|
|
n.Accept(t.v)
|
|
|
|
t.Traverse(n.Expr)
|
|
|
|
t.leave(n)
|
|
}
|
|
|
|
func (t *Traverser) ExprCastInt(n *ast.ExprCastInt) {
|
|
if !t.checkEntrance(n) {
|
|
return
|
|
}
|
|
|
|
n.Accept(t.v)
|
|
|
|
t.Traverse(n.Expr)
|
|
|
|
t.leave(n)
|
|
}
|
|
|
|
func (t *Traverser) ExprCastObject(n *ast.ExprCastObject) {
|
|
if !t.checkEntrance(n) {
|
|
return
|
|
}
|
|
|
|
n.Accept(t.v)
|
|
|
|
t.Traverse(n.Expr)
|
|
|
|
t.leave(n)
|
|
}
|
|
|
|
func (t *Traverser) ExprCastString(n *ast.ExprCastString) {
|
|
if !t.checkEntrance(n) {
|
|
return
|
|
}
|
|
|
|
n.Accept(t.v)
|
|
|
|
t.Traverse(n.Expr)
|
|
|
|
t.leave(n)
|
|
}
|
|
|
|
func (t *Traverser) ExprCastUnset(n *ast.ExprCastUnset) {
|
|
if !t.checkEntrance(n) {
|
|
return
|
|
}
|
|
|
|
n.Accept(t.v)
|
|
|
|
t.Traverse(n.Expr)
|
|
|
|
t.leave(n)
|
|
}
|
|
|
|
func (t *Traverser) ExprAssign(n *ast.ExprAssign) {
|
|
if !t.checkEntrance(n) {
|
|
return
|
|
}
|
|
|
|
n.Accept(t.v)
|
|
|
|
t.Traverse(n.Expr)
|
|
|
|
t.Traverse(n.Var)
|
|
|
|
t.leave(n)
|
|
}
|
|
|
|
func (t *Traverser) ExprAssignReference(n *ast.ExprAssignReference) {
|
|
if !t.checkEntrance(n) {
|
|
return
|
|
}
|
|
|
|
n.Accept(t.v)
|
|
|
|
t.Traverse(n.Expr)
|
|
|
|
t.Traverse(n.Var)
|
|
|
|
t.leave(n)
|
|
}
|
|
|
|
func (t *Traverser) ExprAssignBitwiseAnd(n *ast.ExprAssignBitwiseAnd) {
|
|
if !t.checkEntrance(n) {
|
|
return
|
|
}
|
|
|
|
n.Accept(t.v)
|
|
|
|
t.Traverse(n.Expr)
|
|
|
|
t.Traverse(n.Var)
|
|
|
|
t.leave(n)
|
|
}
|
|
|
|
func (t *Traverser) ExprAssignBitwiseOr(n *ast.ExprAssignBitwiseOr) {
|
|
if !t.checkEntrance(n) {
|
|
return
|
|
}
|
|
|
|
n.Accept(t.v)
|
|
|
|
t.Traverse(n.Expr)
|
|
|
|
t.Traverse(n.Var)
|
|
|
|
t.leave(n)
|
|
}
|
|
|
|
func (t *Traverser) ExprAssignBitwiseXor(n *ast.ExprAssignBitwiseXor) {
|
|
if !t.checkEntrance(n) {
|
|
return
|
|
}
|
|
|
|
n.Accept(t.v)
|
|
|
|
t.Traverse(n.Expr)
|
|
|
|
t.Traverse(n.Var)
|
|
|
|
t.leave(n)
|
|
}
|
|
|
|
func (t *Traverser) ExprAssignCoalesce(n *ast.ExprAssignCoalesce) {
|
|
if !t.checkEntrance(n) {
|
|
return
|
|
}
|
|
|
|
n.Accept(t.v)
|
|
|
|
t.Traverse(n.Expr)
|
|
|
|
t.Traverse(n.Var)
|
|
|
|
t.leave(n)
|
|
}
|
|
|
|
func (t *Traverser) ExprAssignConcat(n *ast.ExprAssignConcat) {
|
|
if !t.checkEntrance(n) {
|
|
return
|
|
}
|
|
|
|
n.Accept(t.v)
|
|
|
|
t.Traverse(n.Expr)
|
|
|
|
t.Traverse(n.Var)
|
|
|
|
t.leave(n)
|
|
}
|
|
|
|
func (t *Traverser) ExprAssignDiv(n *ast.ExprAssignDiv) {
|
|
if !t.checkEntrance(n) {
|
|
return
|
|
}
|
|
|
|
n.Accept(t.v)
|
|
|
|
t.Traverse(n.Expr)
|
|
|
|
t.Traverse(n.Var)
|
|
|
|
t.leave(n)
|
|
}
|
|
|
|
func (t *Traverser) ExprAssignMinus(n *ast.ExprAssignMinus) {
|
|
if !t.checkEntrance(n) {
|
|
return
|
|
}
|
|
|
|
n.Accept(t.v)
|
|
|
|
t.Traverse(n.Expr)
|
|
|
|
t.Traverse(n.Var)
|
|
|
|
t.leave(n)
|
|
}
|
|
|
|
func (t *Traverser) ExprAssignMod(n *ast.ExprAssignMod) {
|
|
if !t.checkEntrance(n) {
|
|
return
|
|
}
|
|
|
|
n.Accept(t.v)
|
|
|
|
t.Traverse(n.Expr)
|
|
|
|
t.Traverse(n.Var)
|
|
|
|
t.leave(n)
|
|
}
|
|
|
|
func (t *Traverser) ExprAssignMul(n *ast.ExprAssignMul) {
|
|
if !t.checkEntrance(n) {
|
|
return
|
|
}
|
|
|
|
n.Accept(t.v)
|
|
|
|
t.Traverse(n.Expr)
|
|
|
|
t.Traverse(n.Var)
|
|
|
|
t.leave(n)
|
|
}
|
|
|
|
func (t *Traverser) ExprAssignPlus(n *ast.ExprAssignPlus) {
|
|
if !t.checkEntrance(n) {
|
|
return
|
|
}
|
|
|
|
n.Accept(t.v)
|
|
|
|
t.Traverse(n.Expr)
|
|
|
|
t.Traverse(n.Var)
|
|
|
|
t.leave(n)
|
|
}
|
|
|
|
func (t *Traverser) ExprAssignPow(n *ast.ExprAssignPow) {
|
|
if !t.checkEntrance(n) {
|
|
return
|
|
}
|
|
|
|
n.Accept(t.v)
|
|
|
|
t.Traverse(n.Expr)
|
|
|
|
t.Traverse(n.Var)
|
|
|
|
t.leave(n)
|
|
}
|
|
|
|
func (t *Traverser) ExprAssignShiftLeft(n *ast.ExprAssignShiftLeft) {
|
|
if !t.checkEntrance(n) {
|
|
return
|
|
}
|
|
|
|
n.Accept(t.v)
|
|
|
|
t.Traverse(n.Expr)
|
|
|
|
t.Traverse(n.Var)
|
|
|
|
t.leave(n)
|
|
}
|
|
|
|
func (t *Traverser) ExprAssignShiftRight(n *ast.ExprAssignShiftRight) {
|
|
if !t.checkEntrance(n) {
|
|
return
|
|
}
|
|
|
|
n.Accept(t.v)
|
|
|
|
t.Traverse(n.Expr)
|
|
|
|
t.Traverse(n.Var)
|
|
|
|
t.leave(n)
|
|
}
|
|
|
|
func (t *Traverser) ExprBinaryBitwiseAnd(n *ast.ExprBinaryBitwiseAnd) {
|
|
if !t.checkEntrance(n) {
|
|
return
|
|
}
|
|
|
|
n.Accept(t.v)
|
|
|
|
t.Traverse(n.Left)
|
|
|
|
t.Traverse(n.Right)
|
|
|
|
t.leave(n)
|
|
}
|
|
|
|
func (t *Traverser) ExprBinaryBitwiseOr(n *ast.ExprBinaryBitwiseOr) {
|
|
if !t.checkEntrance(n) {
|
|
return
|
|
}
|
|
|
|
n.Accept(t.v)
|
|
|
|
t.Traverse(n.Left)
|
|
|
|
t.Traverse(n.Right)
|
|
|
|
t.leave(n)
|
|
}
|
|
|
|
func (t *Traverser) ExprBinaryBitwiseXor(n *ast.ExprBinaryBitwiseXor) {
|
|
if !t.checkEntrance(n) {
|
|
return
|
|
}
|
|
|
|
n.Accept(t.v)
|
|
|
|
t.Traverse(n.Left)
|
|
|
|
t.Traverse(n.Right)
|
|
|
|
t.leave(n)
|
|
}
|
|
|
|
func (t *Traverser) ExprBinaryBooleanAnd(n *ast.ExprBinaryBooleanAnd) {
|
|
if !t.checkEntrance(n) {
|
|
return
|
|
}
|
|
|
|
n.Accept(t.v)
|
|
|
|
t.Traverse(n.Left)
|
|
|
|
t.Traverse(n.Right)
|
|
|
|
t.leave(n)
|
|
}
|
|
|
|
func (t *Traverser) ExprBinaryBooleanOr(n *ast.ExprBinaryBooleanOr) {
|
|
if !t.checkEntrance(n) {
|
|
return
|
|
}
|
|
|
|
n.Accept(t.v)
|
|
|
|
t.Traverse(n.Left)
|
|
|
|
t.Traverse(n.Right)
|
|
|
|
t.leave(n)
|
|
}
|
|
|
|
func (t *Traverser) ExprBinaryCoalesce(n *ast.ExprBinaryCoalesce) {
|
|
if !t.checkEntrance(n) {
|
|
return
|
|
}
|
|
|
|
n.Accept(t.v)
|
|
|
|
t.Traverse(n.Left)
|
|
|
|
t.Traverse(n.Right)
|
|
|
|
t.leave(n)
|
|
}
|
|
|
|
func (t *Traverser) ExprBinaryConcat(n *ast.ExprBinaryConcat) {
|
|
if !t.checkEntrance(n) {
|
|
return
|
|
}
|
|
|
|
n.Accept(t.v)
|
|
|
|
t.Traverse(n.Left)
|
|
|
|
t.Traverse(n.Right)
|
|
|
|
t.leave(n)
|
|
}
|
|
|
|
func (t *Traverser) ExprBinaryDiv(n *ast.ExprBinaryDiv) {
|
|
if !t.checkEntrance(n) {
|
|
return
|
|
}
|
|
|
|
n.Accept(t.v)
|
|
|
|
t.Traverse(n.Left)
|
|
|
|
t.Traverse(n.Right)
|
|
|
|
t.leave(n)
|
|
}
|
|
|
|
func (t *Traverser) ExprBinaryEqual(n *ast.ExprBinaryEqual) {
|
|
if !t.checkEntrance(n) {
|
|
return
|
|
}
|
|
|
|
n.Accept(t.v)
|
|
|
|
t.Traverse(n.Left)
|
|
|
|
t.Traverse(n.Right)
|
|
|
|
t.leave(n)
|
|
}
|
|
|
|
func (t *Traverser) ExprBinaryGreater(n *ast.ExprBinaryGreater) {
|
|
if !t.checkEntrance(n) {
|
|
return
|
|
}
|
|
|
|
n.Accept(t.v)
|
|
|
|
t.Traverse(n.Left)
|
|
|
|
t.Traverse(n.Right)
|
|
|
|
t.leave(n)
|
|
}
|
|
|
|
func (t *Traverser) ExprBinaryGreaterOrEqual(n *ast.ExprBinaryGreaterOrEqual) {
|
|
if !t.checkEntrance(n) {
|
|
return
|
|
}
|
|
|
|
n.Accept(t.v)
|
|
|
|
t.Traverse(n.Left)
|
|
|
|
t.Traverse(n.Right)
|
|
|
|
t.leave(n)
|
|
}
|
|
|
|
func (t *Traverser) ExprBinaryIdentical(n *ast.ExprBinaryIdentical) {
|
|
if !t.checkEntrance(n) {
|
|
return
|
|
}
|
|
|
|
n.Accept(t.v)
|
|
|
|
t.Traverse(n.Left)
|
|
|
|
t.Traverse(n.Right)
|
|
|
|
t.leave(n)
|
|
}
|
|
|
|
func (t *Traverser) ExprBinaryLogicalAnd(n *ast.ExprBinaryLogicalAnd) {
|
|
if !t.checkEntrance(n) {
|
|
return
|
|
}
|
|
|
|
n.Accept(t.v)
|
|
|
|
t.Traverse(n.Left)
|
|
|
|
t.Traverse(n.Right)
|
|
|
|
t.leave(n)
|
|
}
|
|
|
|
func (t *Traverser) ExprBinaryLogicalOr(n *ast.ExprBinaryLogicalOr) {
|
|
if !t.checkEntrance(n) {
|
|
return
|
|
}
|
|
|
|
n.Accept(t.v)
|
|
|
|
t.Traverse(n.Left)
|
|
|
|
t.Traverse(n.Right)
|
|
|
|
t.leave(n)
|
|
}
|
|
|
|
func (t *Traverser) ExprBinaryLogicalXor(n *ast.ExprBinaryLogicalXor) {
|
|
if !t.checkEntrance(n) {
|
|
return
|
|
}
|
|
|
|
n.Accept(t.v)
|
|
|
|
t.Traverse(n.Left)
|
|
|
|
t.Traverse(n.Right)
|
|
|
|
t.leave(n)
|
|
}
|
|
|
|
func (t *Traverser) ExprBinaryMinus(n *ast.ExprBinaryMinus) {
|
|
if !t.checkEntrance(n) {
|
|
return
|
|
}
|
|
|
|
n.Accept(t.v)
|
|
|
|
t.Traverse(n.Left)
|
|
|
|
t.Traverse(n.Right)
|
|
|
|
t.leave(n)
|
|
}
|
|
|
|
func (t *Traverser) ExprBinaryMod(n *ast.ExprBinaryMod) {
|
|
if !t.checkEntrance(n) {
|
|
return
|
|
}
|
|
|
|
n.Accept(t.v)
|
|
|
|
t.Traverse(n.Left)
|
|
|
|
t.Traverse(n.Right)
|
|
|
|
t.leave(n)
|
|
}
|
|
|
|
func (t *Traverser) ExprBinaryMul(n *ast.ExprBinaryMul) {
|
|
if !t.checkEntrance(n) {
|
|
return
|
|
}
|
|
|
|
n.Accept(t.v)
|
|
|
|
t.Traverse(n.Left)
|
|
|
|
t.Traverse(n.Right)
|
|
|
|
t.leave(n)
|
|
}
|
|
|
|
func (t *Traverser) ExprBinaryNotEqual(n *ast.ExprBinaryNotEqual) {
|
|
if !t.checkEntrance(n) {
|
|
return
|
|
}
|
|
|
|
n.Accept(t.v)
|
|
|
|
t.Traverse(n.Left)
|
|
|
|
t.Traverse(n.Right)
|
|
|
|
t.leave(n)
|
|
}
|
|
|
|
func (t *Traverser) ExprBinaryNotIdentical(n *ast.ExprBinaryNotIdentical) {
|
|
if !t.checkEntrance(n) {
|
|
return
|
|
}
|
|
|
|
n.Accept(t.v)
|
|
|
|
t.Traverse(n.Left)
|
|
|
|
t.Traverse(n.Right)
|
|
|
|
t.leave(n)
|
|
}
|
|
|
|
func (t *Traverser) ExprBinaryPlus(n *ast.ExprBinaryPlus) {
|
|
if !t.checkEntrance(n) {
|
|
return
|
|
}
|
|
|
|
n.Accept(t.v)
|
|
|
|
t.Traverse(n.Left)
|
|
|
|
t.Traverse(n.Right)
|
|
|
|
t.leave(n)
|
|
}
|
|
|
|
func (t *Traverser) ExprBinaryPow(n *ast.ExprBinaryPow) {
|
|
if !t.checkEntrance(n) {
|
|
return
|
|
}
|
|
|
|
n.Accept(t.v)
|
|
|
|
t.Traverse(n.Left)
|
|
|
|
t.Traverse(n.Right)
|
|
|
|
t.leave(n)
|
|
}
|
|
|
|
func (t *Traverser) ExprBinaryShiftLeft(n *ast.ExprBinaryShiftLeft) {
|
|
if !t.checkEntrance(n) {
|
|
return
|
|
}
|
|
|
|
n.Accept(t.v)
|
|
|
|
t.Traverse(n.Left)
|
|
|
|
t.Traverse(n.Right)
|
|
|
|
t.leave(n)
|
|
}
|
|
|
|
func (t *Traverser) ExprBinaryShiftRight(n *ast.ExprBinaryShiftRight) {
|
|
if !t.checkEntrance(n) {
|
|
return
|
|
}
|
|
|
|
n.Accept(t.v)
|
|
|
|
t.Traverse(n.Left)
|
|
|
|
t.Traverse(n.Right)
|
|
|
|
t.leave(n)
|
|
}
|
|
|
|
func (t *Traverser) ExprBinarySmaller(n *ast.ExprBinarySmaller) {
|
|
if !t.checkEntrance(n) {
|
|
return
|
|
}
|
|
|
|
n.Accept(t.v)
|
|
|
|
t.Traverse(n.Left)
|
|
|
|
t.Traverse(n.Right)
|
|
|
|
t.leave(n)
|
|
}
|
|
|
|
func (t *Traverser) ExprBinarySmallerOrEqual(n *ast.ExprBinarySmallerOrEqual) {
|
|
if !t.checkEntrance(n) {
|
|
return
|
|
}
|
|
|
|
n.Accept(t.v)
|
|
|
|
t.Traverse(n.Left)
|
|
|
|
t.Traverse(n.Right)
|
|
|
|
t.leave(n)
|
|
}
|
|
|
|
func (t *Traverser) ExprBinarySpaceship(n *ast.ExprBinarySpaceship) {
|
|
if !t.checkEntrance(n) {
|
|
return
|
|
}
|
|
|
|
n.Accept(t.v)
|
|
|
|
t.Traverse(n.Left)
|
|
|
|
t.Traverse(n.Right)
|
|
|
|
t.leave(n)
|
|
}
|
|
|
|
func (t *Traverser) ExprMatch(n *ast.ExprMatch) {
|
|
if !t.checkEntrance(n) {
|
|
return
|
|
}
|
|
|
|
n.Accept(t.v)
|
|
|
|
for _, nn := range n.Arms {
|
|
nn.Accept(t)
|
|
}
|
|
|
|
t.Traverse(n.Expr)
|
|
|
|
t.leave(n)
|
|
}
|
|
|
|
func (t *Traverser) ExprThrow(n *ast.ExprThrow) {
|
|
if !t.checkEntrance(n) {
|
|
return
|
|
}
|
|
|
|
n.Accept(t.v)
|
|
|
|
t.Traverse(n.Expr)
|
|
|
|
t.leave(n)
|
|
}
|
|
|
|
func (t *Traverser) MatchArm(n *ast.MatchArm) {
|
|
if !t.checkEntrance(n) {
|
|
return
|
|
}
|
|
|
|
n.Accept(t.v)
|
|
|
|
for _, nn := range n.Exprs {
|
|
nn.Accept(t)
|
|
}
|
|
|
|
t.Traverse(n.ReturnExpr)
|
|
|
|
t.leave(n)
|
|
}
|
|
|
|
func (t *Traverser) NameName(n *ast.Name) {
|
|
if !t.checkEntrance(n) {
|
|
return
|
|
}
|
|
|
|
n.Accept(t.v)
|
|
|
|
for _, nn := range n.Parts {
|
|
nn.Accept(t)
|
|
}
|
|
|
|
t.leave(n)
|
|
}
|
|
|
|
func (t *Traverser) NameFullyQualified(n *ast.NameFullyQualified) {
|
|
if !t.checkEntrance(n) {
|
|
return
|
|
}
|
|
|
|
n.Accept(t.v)
|
|
|
|
for _, nn := range n.Parts {
|
|
nn.Accept(t)
|
|
}
|
|
|
|
t.leave(n)
|
|
}
|
|
|
|
func (t *Traverser) NameRelative(n *ast.NameRelative) {
|
|
if !t.checkEntrance(n) {
|
|
return
|
|
}
|
|
|
|
n.Accept(t.v)
|
|
|
|
for _, nn := range n.Parts {
|
|
nn.Accept(t)
|
|
}
|
|
|
|
t.leave(n)
|
|
}
|
|
|
|
func (t *Traverser) NameNamePart(n *ast.NamePart) {
|
|
if !t.checkEntrance(n) {
|
|
return
|
|
}
|
|
|
|
n.Accept(t.v)
|
|
|
|
t.leave(n)
|
|
}
|