func (v conditionVisitor) Visit(node ast.Node) ast.Visitor { if node == nil || v.store.err != nil { return ast.Visitor(nil) } if v.store.ignoreNextX > 0 { v.store.ignoreNextX-- return ast.Visitor(nil) } if v.debug { fmt.Println("-------------------------") fmt.Print(">") printNode(node, " - ") fmt.Println(reflect.TypeOf(node)) v.printNodes(v.store.stack) fmt.Println(v.store.result) fmt.Println(v.store.ignoreNextX) } if len(v.store.stack) == 0 { v.store.appendToStack(node) } else { v.handleNode(node) } return ast.Visitor(v) }
func (v *prevFinder) Visit(node ast.Node) ast.Visitor { if _, ok := node.(*ast.File); ok { return ast.Visitor(v) } if node != nil && node.Pos() != token.NoPos { fmt.Println(node.Pos(), v.Off) fmt.Println(node) if int(node.Pos()) < v.Off && int(node.End()) < v.Off { ok := false if v.Ptr == nil { ok = true } else { if v.Off-int(node.End()) < v.Off-int(v.Ptr.End()) { ok = true } } if ok { v.Ptr = node return nil } } } return ast.Visitor(v) }