vitess.io/vitess@v0.16.2/go/tools/asthelpergen/integration/ast_visit.go (about) 1 /* 2 Copyright 2023 The Vitess Authors. 3 4 Licensed under the Apache License, Version 2.0 (the "License"); 5 you may not use this file except in compliance with the License. 6 You may obtain a copy of the License at 7 8 http://www.apache.org/licenses/LICENSE-2.0 9 10 Unless required by applicable law or agreed to in writing, software 11 distributed under the License is distributed on an "AS IS" BASIS, 12 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 See the License for the specific language governing permissions and 14 limitations under the License. 15 */ 16 // Code generated by ASTHelperGen. DO NOT EDIT. 17 18 package integration 19 20 func VisitAST(in AST, f Visit) error { 21 if in == nil { 22 return nil 23 } 24 switch in := in.(type) { 25 case BasicType: 26 return VisitBasicType(in, f) 27 case Bytes: 28 return VisitBytes(in, f) 29 case InterfaceContainer: 30 return VisitInterfaceContainer(in, f) 31 case InterfaceSlice: 32 return VisitInterfaceSlice(in, f) 33 case *Leaf: 34 return VisitRefOfLeaf(in, f) 35 case LeafSlice: 36 return VisitLeafSlice(in, f) 37 case *NoCloneType: 38 return VisitRefOfNoCloneType(in, f) 39 case *RefContainer: 40 return VisitRefOfRefContainer(in, f) 41 case *RefSliceContainer: 42 return VisitRefOfRefSliceContainer(in, f) 43 case *SubImpl: 44 return VisitRefOfSubImpl(in, f) 45 case ValueContainer: 46 return VisitValueContainer(in, f) 47 case ValueSliceContainer: 48 return VisitValueSliceContainer(in, f) 49 default: 50 // this should never happen 51 return nil 52 } 53 } 54 func VisitBytes(in Bytes, f Visit) error { 55 _, err := f(in) 56 return err 57 } 58 func VisitInterfaceContainer(in InterfaceContainer, f Visit) error { 59 if cont, err := f(in); err != nil || !cont { 60 return err 61 } 62 return nil 63 } 64 func VisitInterfaceSlice(in InterfaceSlice, f Visit) error { 65 if in == nil { 66 return nil 67 } 68 if cont, err := f(in); err != nil || !cont { 69 return err 70 } 71 for _, el := range in { 72 if err := VisitAST(el, f); err != nil { 73 return err 74 } 75 } 76 return nil 77 } 78 func VisitRefOfLeaf(in *Leaf, f Visit) error { 79 if in == nil { 80 return nil 81 } 82 if cont, err := f(in); err != nil || !cont { 83 return err 84 } 85 return nil 86 } 87 func VisitLeafSlice(in LeafSlice, f Visit) error { 88 if in == nil { 89 return nil 90 } 91 if cont, err := f(in); err != nil || !cont { 92 return err 93 } 94 for _, el := range in { 95 if err := VisitRefOfLeaf(el, f); err != nil { 96 return err 97 } 98 } 99 return nil 100 } 101 func VisitRefOfNoCloneType(in *NoCloneType, f Visit) error { 102 if in == nil { 103 return nil 104 } 105 if cont, err := f(in); err != nil || !cont { 106 return err 107 } 108 return nil 109 } 110 func VisitRefOfRefContainer(in *RefContainer, f Visit) error { 111 if in == nil { 112 return nil 113 } 114 if cont, err := f(in); err != nil || !cont { 115 return err 116 } 117 if err := VisitAST(in.ASTType, f); err != nil { 118 return err 119 } 120 if err := VisitRefOfLeaf(in.ASTImplementationType, f); err != nil { 121 return err 122 } 123 return nil 124 } 125 func VisitRefOfRefSliceContainer(in *RefSliceContainer, f Visit) error { 126 if in == nil { 127 return nil 128 } 129 if cont, err := f(in); err != nil || !cont { 130 return err 131 } 132 for _, el := range in.ASTElements { 133 if err := VisitAST(el, f); err != nil { 134 return err 135 } 136 } 137 for _, el := range in.ASTImplementationElements { 138 if err := VisitRefOfLeaf(el, f); err != nil { 139 return err 140 } 141 } 142 return nil 143 } 144 func VisitRefOfSubImpl(in *SubImpl, f Visit) error { 145 if in == nil { 146 return nil 147 } 148 if cont, err := f(in); err != nil || !cont { 149 return err 150 } 151 if err := VisitSubIface(in.inner, f); err != nil { 152 return err 153 } 154 return nil 155 } 156 func VisitValueContainer(in ValueContainer, f Visit) error { 157 if cont, err := f(in); err != nil || !cont { 158 return err 159 } 160 if err := VisitAST(in.ASTType, f); err != nil { 161 return err 162 } 163 if err := VisitRefOfLeaf(in.ASTImplementationType, f); err != nil { 164 return err 165 } 166 return nil 167 } 168 func VisitValueSliceContainer(in ValueSliceContainer, f Visit) error { 169 if cont, err := f(in); err != nil || !cont { 170 return err 171 } 172 for _, el := range in.ASTElements { 173 if err := VisitAST(el, f); err != nil { 174 return err 175 } 176 } 177 for _, el := range in.ASTImplementationElements { 178 if err := VisitRefOfLeaf(el, f); err != nil { 179 return err 180 } 181 } 182 return nil 183 } 184 func VisitSubIface(in SubIface, f Visit) error { 185 if in == nil { 186 return nil 187 } 188 switch in := in.(type) { 189 case *SubImpl: 190 return VisitRefOfSubImpl(in, f) 191 default: 192 // this should never happen 193 return nil 194 } 195 } 196 func VisitBasicType(in BasicType, f Visit) error { 197 _, err := f(in) 198 return err 199 } 200 func VisitRefOfInterfaceContainer(in *InterfaceContainer, f Visit) error { 201 if in == nil { 202 return nil 203 } 204 if cont, err := f(in); err != nil || !cont { 205 return err 206 } 207 return nil 208 } 209 func VisitRefOfValueContainer(in *ValueContainer, f Visit) error { 210 if in == nil { 211 return nil 212 } 213 if cont, err := f(in); err != nil || !cont { 214 return err 215 } 216 if err := VisitAST(in.ASTType, f); err != nil { 217 return err 218 } 219 if err := VisitRefOfLeaf(in.ASTImplementationType, f); err != nil { 220 return err 221 } 222 return nil 223 } 224 func VisitRefOfValueSliceContainer(in *ValueSliceContainer, f Visit) error { 225 if in == nil { 226 return nil 227 } 228 if cont, err := f(in); err != nil || !cont { 229 return err 230 } 231 for _, el := range in.ASTElements { 232 if err := VisitAST(el, f); err != nil { 233 return err 234 } 235 } 236 for _, el := range in.ASTImplementationElements { 237 if err := VisitRefOfLeaf(el, f); err != nil { 238 return err 239 } 240 } 241 return nil 242 }