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  }