LCOV - code coverage report
Current view: top level - src - zig_clang.cpp (source / functions) Hit Total Coverage
Test: coverage.info.cleaned Lines: 0 500 0.0 %
Date: 1970-01-01 00:00:01 Functions: 0 130 0.0 %
Branches: 0 61 0.0 %

           Branch data     Line data    Source code
       1                 :            : /*
       2                 :            :  * Copyright (c) 2019 Andrew Kelley
       3                 :            :  *
       4                 :            :  * This file is part of zig, which is MIT licensed.
       5                 :            :  * See http://opensource.org/licenses/MIT
       6                 :            :  */
       7                 :            : 
       8                 :            : 
       9                 :            : /*
      10                 :            :  * The point of this file is to contain all the Clang C++ API interaction so that:
      11                 :            :  * 1. The compile time of other files is kept under control.
      12                 :            :  * 2. Provide a C interface to the Clang functions we need for self-hosting purposes.
      13                 :            :  * 3. Prevent C++ from infecting the rest of the project.
      14                 :            :  */
      15                 :            : #include "zig_clang.h"
      16                 :            : 
      17                 :            : #if __GNUC__ >= 8
      18                 :            : #pragma GCC diagnostic push
      19                 :            : #pragma GCC diagnostic ignored "-Wclass-memaccess"
      20                 :            : #endif
      21                 :            : 
      22                 :            : #include <clang/Frontend/ASTUnit.h>
      23                 :            : #include <clang/Frontend/CompilerInstance.h>
      24                 :            : #include <clang/AST/APValue.h>
      25                 :            : #include <clang/AST/Expr.h>
      26                 :            : 
      27                 :            : #if __GNUC__ >= 8
      28                 :            : #pragma GCC diagnostic pop
      29                 :            : #endif
      30                 :            : 
      31                 :            : // Detect additions to the enum
      32                 :          0 : void ZigClang_detect_enum_BO(clang::BinaryOperatorKind op) {
      33         [ #  # ]:          0 :     switch (op) {
      34                 :          0 :         case clang::BO_PtrMemD:
      35                 :            :         case clang::BO_PtrMemI:
      36                 :            :         case clang::BO_Cmp:
      37                 :            :         case clang::BO_Mul:
      38                 :            :         case clang::BO_Div:
      39                 :            :         case clang::BO_Rem:
      40                 :            :         case clang::BO_Add:
      41                 :            :         case clang::BO_Sub:
      42                 :            :         case clang::BO_Shl:
      43                 :            :         case clang::BO_Shr:
      44                 :            :         case clang::BO_LT:
      45                 :            :         case clang::BO_GT:
      46                 :            :         case clang::BO_LE:
      47                 :            :         case clang::BO_GE:
      48                 :            :         case clang::BO_EQ:
      49                 :            :         case clang::BO_NE:
      50                 :            :         case clang::BO_And:
      51                 :            :         case clang::BO_Xor:
      52                 :            :         case clang::BO_Or:
      53                 :            :         case clang::BO_LAnd:
      54                 :            :         case clang::BO_LOr:
      55                 :            :         case clang::BO_Assign:
      56                 :            :         case clang::BO_Comma:
      57                 :            :         case clang::BO_MulAssign:
      58                 :            :         case clang::BO_DivAssign:
      59                 :            :         case clang::BO_RemAssign:
      60                 :            :         case clang::BO_AddAssign:
      61                 :            :         case clang::BO_SubAssign:
      62                 :            :         case clang::BO_ShlAssign:
      63                 :            :         case clang::BO_ShrAssign:
      64                 :            :         case clang::BO_AndAssign:
      65                 :            :         case clang::BO_XorAssign:
      66                 :            :         case clang::BO_OrAssign:
      67                 :          0 :             break;
      68                 :            :     }
      69                 :          0 : }
      70                 :            : 
      71                 :            : static_assert((clang::BinaryOperatorKind)ZigClangBO_Add == clang::BO_Add, "");
      72                 :            : static_assert((clang::BinaryOperatorKind)ZigClangBO_AddAssign == clang::BO_AddAssign, "");
      73                 :            : static_assert((clang::BinaryOperatorKind)ZigClangBO_And == clang::BO_And, "");
      74                 :            : static_assert((clang::BinaryOperatorKind)ZigClangBO_AndAssign == clang::BO_AndAssign, "");
      75                 :            : static_assert((clang::BinaryOperatorKind)ZigClangBO_Assign == clang::BO_Assign, "");
      76                 :            : static_assert((clang::BinaryOperatorKind)ZigClangBO_Cmp == clang::BO_Cmp, "");
      77                 :            : static_assert((clang::BinaryOperatorKind)ZigClangBO_Comma == clang::BO_Comma, "");
      78                 :            : static_assert((clang::BinaryOperatorKind)ZigClangBO_Div == clang::BO_Div, "");
      79                 :            : static_assert((clang::BinaryOperatorKind)ZigClangBO_DivAssign == clang::BO_DivAssign, "");
      80                 :            : static_assert((clang::BinaryOperatorKind)ZigClangBO_EQ == clang::BO_EQ, "");
      81                 :            : static_assert((clang::BinaryOperatorKind)ZigClangBO_GE == clang::BO_GE, "");
      82                 :            : static_assert((clang::BinaryOperatorKind)ZigClangBO_GT == clang::BO_GT, "");
      83                 :            : static_assert((clang::BinaryOperatorKind)ZigClangBO_LAnd == clang::BO_LAnd, "");
      84                 :            : static_assert((clang::BinaryOperatorKind)ZigClangBO_LE == clang::BO_LE, "");
      85                 :            : static_assert((clang::BinaryOperatorKind)ZigClangBO_LOr == clang::BO_LOr, "");
      86                 :            : static_assert((clang::BinaryOperatorKind)ZigClangBO_LT == clang::BO_LT, "");
      87                 :            : static_assert((clang::BinaryOperatorKind)ZigClangBO_Mul == clang::BO_Mul, "");
      88                 :            : static_assert((clang::BinaryOperatorKind)ZigClangBO_MulAssign == clang::BO_MulAssign, "");
      89                 :            : static_assert((clang::BinaryOperatorKind)ZigClangBO_NE == clang::BO_NE, "");
      90                 :            : static_assert((clang::BinaryOperatorKind)ZigClangBO_Or == clang::BO_Or, "");
      91                 :            : static_assert((clang::BinaryOperatorKind)ZigClangBO_OrAssign == clang::BO_OrAssign, "");
      92                 :            : static_assert((clang::BinaryOperatorKind)ZigClangBO_PtrMemD == clang::BO_PtrMemD, "");
      93                 :            : static_assert((clang::BinaryOperatorKind)ZigClangBO_PtrMemI == clang::BO_PtrMemI, "");
      94                 :            : static_assert((clang::BinaryOperatorKind)ZigClangBO_Rem == clang::BO_Rem, "");
      95                 :            : static_assert((clang::BinaryOperatorKind)ZigClangBO_RemAssign == clang::BO_RemAssign, "");
      96                 :            : static_assert((clang::BinaryOperatorKind)ZigClangBO_Shl == clang::BO_Shl, "");
      97                 :            : static_assert((clang::BinaryOperatorKind)ZigClangBO_ShlAssign == clang::BO_ShlAssign, "");
      98                 :            : static_assert((clang::BinaryOperatorKind)ZigClangBO_Shr == clang::BO_Shr, "");
      99                 :            : static_assert((clang::BinaryOperatorKind)ZigClangBO_ShrAssign == clang::BO_ShrAssign, "");
     100                 :            : static_assert((clang::BinaryOperatorKind)ZigClangBO_Sub == clang::BO_Sub, "");
     101                 :            : static_assert((clang::BinaryOperatorKind)ZigClangBO_SubAssign == clang::BO_SubAssign, "");
     102                 :            : static_assert((clang::BinaryOperatorKind)ZigClangBO_Xor == clang::BO_Xor, "");
     103                 :            : static_assert((clang::BinaryOperatorKind)ZigClangBO_XorAssign == clang::BO_XorAssign, "");
     104                 :            : 
     105                 :            : // Detect additions to the enum
     106                 :          0 : void ZigClang_detect_enum_UO(clang::UnaryOperatorKind op) {
     107         [ #  # ]:          0 :     switch (op) {
     108                 :          0 :         case clang::UO_AddrOf:
     109                 :            :         case clang::UO_Coawait:
     110                 :            :         case clang::UO_Deref:
     111                 :            :         case clang::UO_Extension:
     112                 :            :         case clang::UO_Imag:
     113                 :            :         case clang::UO_LNot:
     114                 :            :         case clang::UO_Minus:
     115                 :            :         case clang::UO_Not:
     116                 :            :         case clang::UO_Plus:
     117                 :            :         case clang::UO_PostDec:
     118                 :            :         case clang::UO_PostInc:
     119                 :            :         case clang::UO_PreDec:
     120                 :            :         case clang::UO_PreInc:
     121                 :            :         case clang::UO_Real:
     122                 :          0 :             break;
     123                 :            :     }
     124                 :          0 : }
     125                 :            : 
     126                 :            : static_assert((clang::UnaryOperatorKind)ZigClangUO_AddrOf == clang::UO_AddrOf, "");
     127                 :            : static_assert((clang::UnaryOperatorKind)ZigClangUO_Coawait == clang::UO_Coawait, "");
     128                 :            : static_assert((clang::UnaryOperatorKind)ZigClangUO_Deref == clang::UO_Deref, "");
     129                 :            : static_assert((clang::UnaryOperatorKind)ZigClangUO_Extension == clang::UO_Extension, "");
     130                 :            : static_assert((clang::UnaryOperatorKind)ZigClangUO_Imag == clang::UO_Imag, "");
     131                 :            : static_assert((clang::UnaryOperatorKind)ZigClangUO_LNot == clang::UO_LNot, "");
     132                 :            : static_assert((clang::UnaryOperatorKind)ZigClangUO_Minus == clang::UO_Minus, "");
     133                 :            : static_assert((clang::UnaryOperatorKind)ZigClangUO_Not == clang::UO_Not, "");
     134                 :            : static_assert((clang::UnaryOperatorKind)ZigClangUO_Plus == clang::UO_Plus, "");
     135                 :            : static_assert((clang::UnaryOperatorKind)ZigClangUO_PostDec == clang::UO_PostDec, "");
     136                 :            : static_assert((clang::UnaryOperatorKind)ZigClangUO_PostInc == clang::UO_PostInc, "");
     137                 :            : static_assert((clang::UnaryOperatorKind)ZigClangUO_PreDec == clang::UO_PreDec, "");
     138                 :            : static_assert((clang::UnaryOperatorKind)ZigClangUO_PreInc == clang::UO_PreInc, "");
     139                 :            : static_assert((clang::UnaryOperatorKind)ZigClangUO_Real == clang::UO_Real, "");
     140                 :            : 
     141                 :            : // Detect additions to the enum
     142                 :          0 : void ZigClang_detect_enum_CK(clang::CastKind x) {
     143         [ #  # ]:          0 :     switch (x) {
     144                 :          0 :         case clang::CK_ARCConsumeObject:
     145                 :            :         case clang::CK_ARCExtendBlockObject:
     146                 :            :         case clang::CK_ARCProduceObject:
     147                 :            :         case clang::CK_ARCReclaimReturnedObject:
     148                 :            :         case clang::CK_AddressSpaceConversion:
     149                 :            :         case clang::CK_AnyPointerToBlockPointerCast:
     150                 :            :         case clang::CK_ArrayToPointerDecay:
     151                 :            :         case clang::CK_AtomicToNonAtomic:
     152                 :            :         case clang::CK_BaseToDerived:
     153                 :            :         case clang::CK_BaseToDerivedMemberPointer:
     154                 :            :         case clang::CK_BitCast:
     155                 :            :         case clang::CK_BlockPointerToObjCPointerCast:
     156                 :            :         case clang::CK_BooleanToSignedIntegral:
     157                 :            :         case clang::CK_BuiltinFnToFnPtr:
     158                 :            :         case clang::CK_CPointerToObjCPointerCast:
     159                 :            :         case clang::CK_ConstructorConversion:
     160                 :            :         case clang::CK_CopyAndAutoreleaseBlockObject:
     161                 :            :         case clang::CK_Dependent:
     162                 :            :         case clang::CK_DerivedToBase:
     163                 :            :         case clang::CK_DerivedToBaseMemberPointer:
     164                 :            :         case clang::CK_Dynamic:
     165                 :            :         case clang::CK_FloatingCast:
     166                 :            :         case clang::CK_FloatingComplexCast:
     167                 :            :         case clang::CK_FloatingComplexToBoolean:
     168                 :            :         case clang::CK_FloatingComplexToIntegralComplex:
     169                 :            :         case clang::CK_FloatingComplexToReal:
     170                 :            :         case clang::CK_FloatingRealToComplex:
     171                 :            :         case clang::CK_FloatingToBoolean:
     172                 :            :         case clang::CK_FloatingToIntegral:
     173                 :            :         case clang::CK_FunctionToPointerDecay:
     174                 :            :         case clang::CK_IntToOCLSampler:
     175                 :            :         case clang::CK_IntegralCast:
     176                 :            :         case clang::CK_IntegralComplexCast:
     177                 :            :         case clang::CK_IntegralComplexToBoolean:
     178                 :            :         case clang::CK_IntegralComplexToFloatingComplex:
     179                 :            :         case clang::CK_IntegralComplexToReal:
     180                 :            :         case clang::CK_IntegralRealToComplex:
     181                 :            :         case clang::CK_IntegralToBoolean:
     182                 :            :         case clang::CK_IntegralToFloating:
     183                 :            :         case clang::CK_IntegralToPointer:
     184                 :            :         case clang::CK_LValueBitCast:
     185                 :            :         case clang::CK_LValueToRValue:
     186                 :            :         case clang::CK_MemberPointerToBoolean:
     187                 :            :         case clang::CK_NoOp:
     188                 :            :         case clang::CK_NonAtomicToAtomic:
     189                 :            :         case clang::CK_NullToMemberPointer:
     190                 :            :         case clang::CK_NullToPointer:
     191                 :            :         case clang::CK_ObjCObjectLValueCast:
     192                 :            :         case clang::CK_PointerToBoolean:
     193                 :            :         case clang::CK_PointerToIntegral:
     194                 :            :         case clang::CK_ReinterpretMemberPointer:
     195                 :            :         case clang::CK_ToUnion:
     196                 :            :         case clang::CK_ToVoid:
     197                 :            :         case clang::CK_UncheckedDerivedToBase:
     198                 :            :         case clang::CK_UserDefinedConversion:
     199                 :            :         case clang::CK_VectorSplat:
     200                 :            :         case clang::CK_ZeroToOCLOpaqueType:
     201                 :            :         case clang::CK_FixedPointCast:
     202                 :            :         case clang::CK_FixedPointToBoolean:
     203                 :          0 :             break;
     204                 :            :     }
     205                 :          0 : };
     206                 :            : 
     207                 :            : static_assert((clang::CastKind)ZigClangCK_Dependent == clang::CK_Dependent, "");
     208                 :            : static_assert((clang::CastKind)ZigClangCK_BitCast == clang::CK_BitCast, "");
     209                 :            : static_assert((clang::CastKind)ZigClangCK_LValueBitCast == clang::CK_LValueBitCast, "");
     210                 :            : static_assert((clang::CastKind)ZigClangCK_LValueToRValue == clang::CK_LValueToRValue, "");
     211                 :            : static_assert((clang::CastKind)ZigClangCK_NoOp == clang::CK_NoOp, "");
     212                 :            : static_assert((clang::CastKind)ZigClangCK_BaseToDerived == clang::CK_BaseToDerived, "");
     213                 :            : static_assert((clang::CastKind)ZigClangCK_DerivedToBase == clang::CK_DerivedToBase, "");
     214                 :            : static_assert((clang::CastKind)ZigClangCK_UncheckedDerivedToBase == clang::CK_UncheckedDerivedToBase, "");
     215                 :            : static_assert((clang::CastKind)ZigClangCK_Dynamic == clang::CK_Dynamic, "");
     216                 :            : static_assert((clang::CastKind)ZigClangCK_ToUnion == clang::CK_ToUnion, "");
     217                 :            : static_assert((clang::CastKind)ZigClangCK_ArrayToPointerDecay == clang::CK_ArrayToPointerDecay, "");
     218                 :            : static_assert((clang::CastKind)ZigClangCK_FunctionToPointerDecay == clang::CK_FunctionToPointerDecay, "");
     219                 :            : static_assert((clang::CastKind)ZigClangCK_NullToPointer == clang::CK_NullToPointer, "");
     220                 :            : static_assert((clang::CastKind)ZigClangCK_NullToMemberPointer == clang::CK_NullToMemberPointer, "");
     221                 :            : static_assert((clang::CastKind)ZigClangCK_BaseToDerivedMemberPointer == clang::CK_BaseToDerivedMemberPointer, "");
     222                 :            : static_assert((clang::CastKind)ZigClangCK_DerivedToBaseMemberPointer == clang::CK_DerivedToBaseMemberPointer, "");
     223                 :            : static_assert((clang::CastKind)ZigClangCK_MemberPointerToBoolean == clang::CK_MemberPointerToBoolean, "");
     224                 :            : static_assert((clang::CastKind)ZigClangCK_ReinterpretMemberPointer == clang::CK_ReinterpretMemberPointer, "");
     225                 :            : static_assert((clang::CastKind)ZigClangCK_UserDefinedConversion == clang::CK_UserDefinedConversion, "");
     226                 :            : static_assert((clang::CastKind)ZigClangCK_ConstructorConversion == clang::CK_ConstructorConversion, "");
     227                 :            : static_assert((clang::CastKind)ZigClangCK_IntegralToPointer == clang::CK_IntegralToPointer, "");
     228                 :            : static_assert((clang::CastKind)ZigClangCK_PointerToIntegral == clang::CK_PointerToIntegral, "");
     229                 :            : static_assert((clang::CastKind)ZigClangCK_PointerToBoolean == clang::CK_PointerToBoolean, "");
     230                 :            : static_assert((clang::CastKind)ZigClangCK_ToVoid == clang::CK_ToVoid, "");
     231                 :            : static_assert((clang::CastKind)ZigClangCK_VectorSplat == clang::CK_VectorSplat, "");
     232                 :            : static_assert((clang::CastKind)ZigClangCK_IntegralCast == clang::CK_IntegralCast, "");
     233                 :            : static_assert((clang::CastKind)ZigClangCK_IntegralToBoolean == clang::CK_IntegralToBoolean, "");
     234                 :            : static_assert((clang::CastKind)ZigClangCK_IntegralToFloating == clang::CK_IntegralToFloating, "");
     235                 :            : static_assert((clang::CastKind)ZigClangCK_FixedPointCast == clang::CK_FixedPointCast, "");
     236                 :            : static_assert((clang::CastKind)ZigClangCK_FixedPointToBoolean == clang::CK_FixedPointToBoolean, "");
     237                 :            : static_assert((clang::CastKind)ZigClangCK_FloatingToIntegral == clang::CK_FloatingToIntegral, "");
     238                 :            : static_assert((clang::CastKind)ZigClangCK_FloatingToBoolean == clang::CK_FloatingToBoolean, "");
     239                 :            : static_assert((clang::CastKind)ZigClangCK_BooleanToSignedIntegral == clang::CK_BooleanToSignedIntegral, "");
     240                 :            : static_assert((clang::CastKind)ZigClangCK_FloatingCast == clang::CK_FloatingCast, "");
     241                 :            : static_assert((clang::CastKind)ZigClangCK_CPointerToObjCPointerCast == clang::CK_CPointerToObjCPointerCast, "");
     242                 :            : static_assert((clang::CastKind)ZigClangCK_BlockPointerToObjCPointerCast == clang::CK_BlockPointerToObjCPointerCast, "");
     243                 :            : static_assert((clang::CastKind)ZigClangCK_AnyPointerToBlockPointerCast == clang::CK_AnyPointerToBlockPointerCast, "");
     244                 :            : static_assert((clang::CastKind)ZigClangCK_ObjCObjectLValueCast == clang::CK_ObjCObjectLValueCast, "");
     245                 :            : static_assert((clang::CastKind)ZigClangCK_FloatingRealToComplex == clang::CK_FloatingRealToComplex, "");
     246                 :            : static_assert((clang::CastKind)ZigClangCK_FloatingComplexToReal == clang::CK_FloatingComplexToReal, "");
     247                 :            : static_assert((clang::CastKind)ZigClangCK_FloatingComplexToBoolean == clang::CK_FloatingComplexToBoolean, "");
     248                 :            : static_assert((clang::CastKind)ZigClangCK_FloatingComplexCast == clang::CK_FloatingComplexCast, "");
     249                 :            : static_assert((clang::CastKind)ZigClangCK_FloatingComplexToIntegralComplex == clang::CK_FloatingComplexToIntegralComplex, "");
     250                 :            : static_assert((clang::CastKind)ZigClangCK_IntegralRealToComplex == clang::CK_IntegralRealToComplex, "");
     251                 :            : static_assert((clang::CastKind)ZigClangCK_IntegralComplexToReal == clang::CK_IntegralComplexToReal, "");
     252                 :            : static_assert((clang::CastKind)ZigClangCK_IntegralComplexToBoolean == clang::CK_IntegralComplexToBoolean, "");
     253                 :            : static_assert((clang::CastKind)ZigClangCK_IntegralComplexCast == clang::CK_IntegralComplexCast, "");
     254                 :            : static_assert((clang::CastKind)ZigClangCK_IntegralComplexToFloatingComplex == clang::CK_IntegralComplexToFloatingComplex, "");
     255                 :            : static_assert((clang::CastKind)ZigClangCK_ARCProduceObject == clang::CK_ARCProduceObject, "");
     256                 :            : static_assert((clang::CastKind)ZigClangCK_ARCConsumeObject == clang::CK_ARCConsumeObject, "");
     257                 :            : static_assert((clang::CastKind)ZigClangCK_ARCReclaimReturnedObject == clang::CK_ARCReclaimReturnedObject, "");
     258                 :            : static_assert((clang::CastKind)ZigClangCK_ARCExtendBlockObject == clang::CK_ARCExtendBlockObject, "");
     259                 :            : static_assert((clang::CastKind)ZigClangCK_AtomicToNonAtomic == clang::CK_AtomicToNonAtomic, "");
     260                 :            : static_assert((clang::CastKind)ZigClangCK_NonAtomicToAtomic == clang::CK_NonAtomicToAtomic, "");
     261                 :            : static_assert((clang::CastKind)ZigClangCK_CopyAndAutoreleaseBlockObject == clang::CK_CopyAndAutoreleaseBlockObject, "");
     262                 :            : static_assert((clang::CastKind)ZigClangCK_BuiltinFnToFnPtr == clang::CK_BuiltinFnToFnPtr, "");
     263                 :            : static_assert((clang::CastKind)ZigClangCK_ZeroToOCLOpaqueType == clang::CK_ZeroToOCLOpaqueType, "");
     264                 :            : static_assert((clang::CastKind)ZigClangCK_AddressSpaceConversion == clang::CK_AddressSpaceConversion, "");
     265                 :            : static_assert((clang::CastKind)ZigClangCK_IntToOCLSampler == clang::CK_IntToOCLSampler, "");
     266                 :            : 
     267                 :            : // Detect additions to the enum
     268                 :          0 : void ZigClang_detect_enum_TypeClass(clang::Type::TypeClass ty) {
     269         [ #  # ]:          0 :     switch (ty) {
     270                 :          0 :         case clang::Type::Builtin:
     271                 :            :         case clang::Type::Complex:
     272                 :            :         case clang::Type::Pointer:
     273                 :            :         case clang::Type::BlockPointer:
     274                 :            :         case clang::Type::LValueReference:
     275                 :            :         case clang::Type::RValueReference:
     276                 :            :         case clang::Type::MemberPointer:
     277                 :            :         case clang::Type::ConstantArray:
     278                 :            :         case clang::Type::IncompleteArray:
     279                 :            :         case clang::Type::VariableArray:
     280                 :            :         case clang::Type::DependentSizedArray:
     281                 :            :         case clang::Type::DependentSizedExtVector:
     282                 :            :         case clang::Type::DependentAddressSpace:
     283                 :            :         case clang::Type::Vector:
     284                 :            :         case clang::Type::DependentVector:
     285                 :            :         case clang::Type::ExtVector:
     286                 :            :         case clang::Type::FunctionProto:
     287                 :            :         case clang::Type::FunctionNoProto:
     288                 :            :         case clang::Type::UnresolvedUsing:
     289                 :            :         case clang::Type::Paren:
     290                 :            :         case clang::Type::Typedef:
     291                 :            :         case clang::Type::Adjusted:
     292                 :            :         case clang::Type::Decayed:
     293                 :            :         case clang::Type::TypeOfExpr:
     294                 :            :         case clang::Type::TypeOf:
     295                 :            :         case clang::Type::Decltype:
     296                 :            :         case clang::Type::UnaryTransform:
     297                 :            :         case clang::Type::Record:
     298                 :            :         case clang::Type::Enum:
     299                 :            :         case clang::Type::Elaborated:
     300                 :            :         case clang::Type::Attributed:
     301                 :            :         case clang::Type::TemplateTypeParm:
     302                 :            :         case clang::Type::SubstTemplateTypeParm:
     303                 :            :         case clang::Type::SubstTemplateTypeParmPack:
     304                 :            :         case clang::Type::TemplateSpecialization:
     305                 :            :         case clang::Type::Auto:
     306                 :            :         case clang::Type::DeducedTemplateSpecialization:
     307                 :            :         case clang::Type::InjectedClassName:
     308                 :            :         case clang::Type::DependentName:
     309                 :            :         case clang::Type::DependentTemplateSpecialization:
     310                 :            :         case clang::Type::PackExpansion:
     311                 :            :         case clang::Type::ObjCTypeParam:
     312                 :            :         case clang::Type::ObjCObject:
     313                 :            :         case clang::Type::ObjCInterface:
     314                 :            :         case clang::Type::ObjCObjectPointer:
     315                 :            :         case clang::Type::Pipe:
     316                 :            :         case clang::Type::Atomic:
     317                 :          0 :             break;
     318                 :            :     }
     319                 :          0 : }
     320                 :            : 
     321                 :            : static_assert((clang::Type::TypeClass)ZigClangType_Builtin == clang::Type::Builtin, "");
     322                 :            : static_assert((clang::Type::TypeClass)ZigClangType_Complex == clang::Type::Complex, "");
     323                 :            : static_assert((clang::Type::TypeClass)ZigClangType_Pointer == clang::Type::Pointer, "");
     324                 :            : static_assert((clang::Type::TypeClass)ZigClangType_BlockPointer == clang::Type::BlockPointer, "");
     325                 :            : static_assert((clang::Type::TypeClass)ZigClangType_LValueReference == clang::Type::LValueReference, "");
     326                 :            : static_assert((clang::Type::TypeClass)ZigClangType_RValueReference == clang::Type::RValueReference, "");
     327                 :            : static_assert((clang::Type::TypeClass)ZigClangType_MemberPointer == clang::Type::MemberPointer, "");
     328                 :            : static_assert((clang::Type::TypeClass)ZigClangType_ConstantArray == clang::Type::ConstantArray, "");
     329                 :            : static_assert((clang::Type::TypeClass)ZigClangType_IncompleteArray == clang::Type::IncompleteArray, "");
     330                 :            : static_assert((clang::Type::TypeClass)ZigClangType_VariableArray == clang::Type::VariableArray, "");
     331                 :            : static_assert((clang::Type::TypeClass)ZigClangType_DependentSizedArray == clang::Type::DependentSizedArray, "");
     332                 :            : static_assert((clang::Type::TypeClass)ZigClangType_DependentSizedExtVector == clang::Type::DependentSizedExtVector, "");
     333                 :            : static_assert((clang::Type::TypeClass)ZigClangType_DependentAddressSpace == clang::Type::DependentAddressSpace, "");
     334                 :            : static_assert((clang::Type::TypeClass)ZigClangType_Vector == clang::Type::Vector, "");
     335                 :            : static_assert((clang::Type::TypeClass)ZigClangType_DependentVector == clang::Type::DependentVector, "");
     336                 :            : static_assert((clang::Type::TypeClass)ZigClangType_ExtVector == clang::Type::ExtVector, "");
     337                 :            : static_assert((clang::Type::TypeClass)ZigClangType_FunctionProto == clang::Type::FunctionProto, "");
     338                 :            : static_assert((clang::Type::TypeClass)ZigClangType_FunctionNoProto == clang::Type::FunctionNoProto, "");
     339                 :            : static_assert((clang::Type::TypeClass)ZigClangType_UnresolvedUsing == clang::Type::UnresolvedUsing, "");
     340                 :            : static_assert((clang::Type::TypeClass)ZigClangType_Paren == clang::Type::Paren, "");
     341                 :            : static_assert((clang::Type::TypeClass)ZigClangType_Typedef == clang::Type::Typedef, "");
     342                 :            : static_assert((clang::Type::TypeClass)ZigClangType_Adjusted == clang::Type::Adjusted, "");
     343                 :            : static_assert((clang::Type::TypeClass)ZigClangType_Decayed == clang::Type::Decayed, "");
     344                 :            : static_assert((clang::Type::TypeClass)ZigClangType_TypeOfExpr == clang::Type::TypeOfExpr, "");
     345                 :            : static_assert((clang::Type::TypeClass)ZigClangType_TypeOf == clang::Type::TypeOf, "");
     346                 :            : static_assert((clang::Type::TypeClass)ZigClangType_Decltype == clang::Type::Decltype, "");
     347                 :            : static_assert((clang::Type::TypeClass)ZigClangType_UnaryTransform == clang::Type::UnaryTransform, "");
     348                 :            : static_assert((clang::Type::TypeClass)ZigClangType_Record == clang::Type::Record, "");
     349                 :            : static_assert((clang::Type::TypeClass)ZigClangType_Enum == clang::Type::Enum, "");
     350                 :            : static_assert((clang::Type::TypeClass)ZigClangType_Elaborated == clang::Type::Elaborated, "");
     351                 :            : static_assert((clang::Type::TypeClass)ZigClangType_Attributed == clang::Type::Attributed, "");
     352                 :            : static_assert((clang::Type::TypeClass)ZigClangType_TemplateTypeParm == clang::Type::TemplateTypeParm, "");
     353                 :            : static_assert((clang::Type::TypeClass)ZigClangType_SubstTemplateTypeParm == clang::Type::SubstTemplateTypeParm, "");
     354                 :            : static_assert((clang::Type::TypeClass)ZigClangType_SubstTemplateTypeParmPack == clang::Type::SubstTemplateTypeParmPack, "");
     355                 :            : static_assert((clang::Type::TypeClass)ZigClangType_TemplateSpecialization == clang::Type::TemplateSpecialization, "");
     356                 :            : static_assert((clang::Type::TypeClass)ZigClangType_Auto == clang::Type::Auto, "");
     357                 :            : static_assert((clang::Type::TypeClass)ZigClangType_DeducedTemplateSpecialization == clang::Type::DeducedTemplateSpecialization, "");
     358                 :            : static_assert((clang::Type::TypeClass)ZigClangType_InjectedClassName == clang::Type::InjectedClassName, "");
     359                 :            : static_assert((clang::Type::TypeClass)ZigClangType_DependentName == clang::Type::DependentName, "");
     360                 :            : static_assert((clang::Type::TypeClass)ZigClangType_DependentTemplateSpecialization == clang::Type::DependentTemplateSpecialization, "");
     361                 :            : static_assert((clang::Type::TypeClass)ZigClangType_PackExpansion == clang::Type::PackExpansion, "");
     362                 :            : static_assert((clang::Type::TypeClass)ZigClangType_ObjCTypeParam == clang::Type::ObjCTypeParam, "");
     363                 :            : static_assert((clang::Type::TypeClass)ZigClangType_ObjCObject == clang::Type::ObjCObject, "");
     364                 :            : static_assert((clang::Type::TypeClass)ZigClangType_ObjCInterface == clang::Type::ObjCInterface, "");
     365                 :            : static_assert((clang::Type::TypeClass)ZigClangType_ObjCObjectPointer == clang::Type::ObjCObjectPointer, "");
     366                 :            : static_assert((clang::Type::TypeClass)ZigClangType_Pipe == clang::Type::Pipe, "");
     367                 :            : static_assert((clang::Type::TypeClass)ZigClangType_Atomic == clang::Type::Atomic, "");
     368                 :            : 
     369                 :            : // Detect additions to the enum
     370                 :          0 : void ZigClang_detect_enum_StmtClass(clang::Stmt::StmtClass x) {
     371         [ #  # ]:          0 :     switch (x) {
     372                 :          0 :         case clang::Stmt::NoStmtClass:
     373                 :            :         case clang::Stmt::NullStmtClass:
     374                 :            :         case clang::Stmt::CompoundStmtClass:
     375                 :            :         case clang::Stmt::LabelStmtClass:
     376                 :            :         case clang::Stmt::AttributedStmtClass:
     377                 :            :         case clang::Stmt::IfStmtClass:
     378                 :            :         case clang::Stmt::SwitchStmtClass:
     379                 :            :         case clang::Stmt::WhileStmtClass:
     380                 :            :         case clang::Stmt::DoStmtClass:
     381                 :            :         case clang::Stmt::ForStmtClass:
     382                 :            :         case clang::Stmt::GotoStmtClass:
     383                 :            :         case clang::Stmt::IndirectGotoStmtClass:
     384                 :            :         case clang::Stmt::ContinueStmtClass:
     385                 :            :         case clang::Stmt::BreakStmtClass:
     386                 :            :         case clang::Stmt::ReturnStmtClass:
     387                 :            :         case clang::Stmt::DeclStmtClass:
     388                 :            :         case clang::Stmt::CaseStmtClass:
     389                 :            :         case clang::Stmt::DefaultStmtClass:
     390                 :            :         case clang::Stmt::CapturedStmtClass:
     391                 :            :         case clang::Stmt::GCCAsmStmtClass:
     392                 :            :         case clang::Stmt::MSAsmStmtClass:
     393                 :            :         case clang::Stmt::ObjCAtTryStmtClass:
     394                 :            :         case clang::Stmt::ObjCAtCatchStmtClass:
     395                 :            :         case clang::Stmt::ObjCAtFinallyStmtClass:
     396                 :            :         case clang::Stmt::ObjCAtThrowStmtClass:
     397                 :            :         case clang::Stmt::ObjCAtSynchronizedStmtClass:
     398                 :            :         case clang::Stmt::ObjCForCollectionStmtClass:
     399                 :            :         case clang::Stmt::ObjCAutoreleasePoolStmtClass:
     400                 :            :         case clang::Stmt::CXXCatchStmtClass:
     401                 :            :         case clang::Stmt::CXXTryStmtClass:
     402                 :            :         case clang::Stmt::CXXForRangeStmtClass:
     403                 :            :         case clang::Stmt::CoroutineBodyStmtClass:
     404                 :            :         case clang::Stmt::CoreturnStmtClass:
     405                 :            :         case clang::Stmt::PredefinedExprClass:
     406                 :            :         case clang::Stmt::DeclRefExprClass:
     407                 :            :         case clang::Stmt::IntegerLiteralClass:
     408                 :            :         case clang::Stmt::FixedPointLiteralClass:
     409                 :            :         case clang::Stmt::FloatingLiteralClass:
     410                 :            :         case clang::Stmt::ImaginaryLiteralClass:
     411                 :            :         case clang::Stmt::StringLiteralClass:
     412                 :            :         case clang::Stmt::CharacterLiteralClass:
     413                 :            :         case clang::Stmt::ParenExprClass:
     414                 :            :         case clang::Stmt::UnaryOperatorClass:
     415                 :            :         case clang::Stmt::OffsetOfExprClass:
     416                 :            :         case clang::Stmt::UnaryExprOrTypeTraitExprClass:
     417                 :            :         case clang::Stmt::ArraySubscriptExprClass:
     418                 :            :         case clang::Stmt::OMPArraySectionExprClass:
     419                 :            :         case clang::Stmt::CallExprClass:
     420                 :            :         case clang::Stmt::MemberExprClass:
     421                 :            :         case clang::Stmt::BinaryOperatorClass:
     422                 :            :         case clang::Stmt::CompoundAssignOperatorClass:
     423                 :            :         case clang::Stmt::ConditionalOperatorClass:
     424                 :            :         case clang::Stmt::BinaryConditionalOperatorClass:
     425                 :            :         case clang::Stmt::ImplicitCastExprClass:
     426                 :            :         case clang::Stmt::CStyleCastExprClass:
     427                 :            :         case clang::Stmt::CompoundLiteralExprClass:
     428                 :            :         case clang::Stmt::ExtVectorElementExprClass:
     429                 :            :         case clang::Stmt::InitListExprClass:
     430                 :            :         case clang::Stmt::DesignatedInitExprClass:
     431                 :            :         case clang::Stmt::DesignatedInitUpdateExprClass:
     432                 :            :         case clang::Stmt::ImplicitValueInitExprClass:
     433                 :            :         case clang::Stmt::NoInitExprClass:
     434                 :            :         case clang::Stmt::ArrayInitLoopExprClass:
     435                 :            :         case clang::Stmt::ArrayInitIndexExprClass:
     436                 :            :         case clang::Stmt::ParenListExprClass:
     437                 :            :         case clang::Stmt::VAArgExprClass:
     438                 :            :         case clang::Stmt::GenericSelectionExprClass:
     439                 :            :         case clang::Stmt::PseudoObjectExprClass:
     440                 :            :         case clang::Stmt::ConstantExprClass:
     441                 :            :         case clang::Stmt::AtomicExprClass:
     442                 :            :         case clang::Stmt::AddrLabelExprClass:
     443                 :            :         case clang::Stmt::StmtExprClass:
     444                 :            :         case clang::Stmt::ChooseExprClass:
     445                 :            :         case clang::Stmt::GNUNullExprClass:
     446                 :            :         case clang::Stmt::CXXOperatorCallExprClass:
     447                 :            :         case clang::Stmt::CXXMemberCallExprClass:
     448                 :            :         case clang::Stmt::CXXStaticCastExprClass:
     449                 :            :         case clang::Stmt::CXXDynamicCastExprClass:
     450                 :            :         case clang::Stmt::CXXReinterpretCastExprClass:
     451                 :            :         case clang::Stmt::CXXConstCastExprClass:
     452                 :            :         case clang::Stmt::CXXFunctionalCastExprClass:
     453                 :            :         case clang::Stmt::CXXTypeidExprClass:
     454                 :            :         case clang::Stmt::UserDefinedLiteralClass:
     455                 :            :         case clang::Stmt::CXXBoolLiteralExprClass:
     456                 :            :         case clang::Stmt::CXXNullPtrLiteralExprClass:
     457                 :            :         case clang::Stmt::CXXThisExprClass:
     458                 :            :         case clang::Stmt::CXXThrowExprClass:
     459                 :            :         case clang::Stmt::CXXDefaultArgExprClass:
     460                 :            :         case clang::Stmt::CXXDefaultInitExprClass:
     461                 :            :         case clang::Stmt::CXXScalarValueInitExprClass:
     462                 :            :         case clang::Stmt::CXXStdInitializerListExprClass:
     463                 :            :         case clang::Stmt::CXXNewExprClass:
     464                 :            :         case clang::Stmt::CXXDeleteExprClass:
     465                 :            :         case clang::Stmt::CXXPseudoDestructorExprClass:
     466                 :            :         case clang::Stmt::TypeTraitExprClass:
     467                 :            :         case clang::Stmt::ArrayTypeTraitExprClass:
     468                 :            :         case clang::Stmt::ExpressionTraitExprClass:
     469                 :            :         case clang::Stmt::DependentScopeDeclRefExprClass:
     470                 :            :         case clang::Stmt::CXXConstructExprClass:
     471                 :            :         case clang::Stmt::CXXInheritedCtorInitExprClass:
     472                 :            :         case clang::Stmt::CXXBindTemporaryExprClass:
     473                 :            :         case clang::Stmt::ExprWithCleanupsClass:
     474                 :            :         case clang::Stmt::CXXTemporaryObjectExprClass:
     475                 :            :         case clang::Stmt::CXXUnresolvedConstructExprClass:
     476                 :            :         case clang::Stmt::CXXDependentScopeMemberExprClass:
     477                 :            :         case clang::Stmt::UnresolvedLookupExprClass:
     478                 :            :         case clang::Stmt::UnresolvedMemberExprClass:
     479                 :            :         case clang::Stmt::CXXNoexceptExprClass:
     480                 :            :         case clang::Stmt::PackExpansionExprClass:
     481                 :            :         case clang::Stmt::SizeOfPackExprClass:
     482                 :            :         case clang::Stmt::SubstNonTypeTemplateParmExprClass:
     483                 :            :         case clang::Stmt::SubstNonTypeTemplateParmPackExprClass:
     484                 :            :         case clang::Stmt::FunctionParmPackExprClass:
     485                 :            :         case clang::Stmt::MaterializeTemporaryExprClass:
     486                 :            :         case clang::Stmt::LambdaExprClass:
     487                 :            :         case clang::Stmt::CXXFoldExprClass:
     488                 :            :         case clang::Stmt::CoawaitExprClass:
     489                 :            :         case clang::Stmt::DependentCoawaitExprClass:
     490                 :            :         case clang::Stmt::CoyieldExprClass:
     491                 :            :         case clang::Stmt::ObjCStringLiteralClass:
     492                 :            :         case clang::Stmt::ObjCBoxedExprClass:
     493                 :            :         case clang::Stmt::ObjCArrayLiteralClass:
     494                 :            :         case clang::Stmt::ObjCDictionaryLiteralClass:
     495                 :            :         case clang::Stmt::ObjCEncodeExprClass:
     496                 :            :         case clang::Stmt::ObjCMessageExprClass:
     497                 :            :         case clang::Stmt::ObjCSelectorExprClass:
     498                 :            :         case clang::Stmt::ObjCProtocolExprClass:
     499                 :            :         case clang::Stmt::ObjCIvarRefExprClass:
     500                 :            :         case clang::Stmt::ObjCPropertyRefExprClass:
     501                 :            :         case clang::Stmt::ObjCIsaExprClass:
     502                 :            :         case clang::Stmt::ObjCIndirectCopyRestoreExprClass:
     503                 :            :         case clang::Stmt::ObjCBoolLiteralExprClass:
     504                 :            :         case clang::Stmt::ObjCSubscriptRefExprClass:
     505                 :            :         case clang::Stmt::ObjCAvailabilityCheckExprClass:
     506                 :            :         case clang::Stmt::ObjCBridgedCastExprClass:
     507                 :            :         case clang::Stmt::CUDAKernelCallExprClass:
     508                 :            :         case clang::Stmt::ShuffleVectorExprClass:
     509                 :            :         case clang::Stmt::ConvertVectorExprClass:
     510                 :            :         case clang::Stmt::BlockExprClass:
     511                 :            :         case clang::Stmt::OpaqueValueExprClass:
     512                 :            :         case clang::Stmt::TypoExprClass:
     513                 :            :         case clang::Stmt::MSPropertyRefExprClass:
     514                 :            :         case clang::Stmt::MSPropertySubscriptExprClass:
     515                 :            :         case clang::Stmt::CXXUuidofExprClass:
     516                 :            :         case clang::Stmt::SEHTryStmtClass:
     517                 :            :         case clang::Stmt::SEHExceptStmtClass:
     518                 :            :         case clang::Stmt::SEHFinallyStmtClass:
     519                 :            :         case clang::Stmt::SEHLeaveStmtClass:
     520                 :            :         case clang::Stmt::MSDependentExistsStmtClass:
     521                 :            :         case clang::Stmt::AsTypeExprClass:
     522                 :            :         case clang::Stmt::OMPParallelDirectiveClass:
     523                 :            :         case clang::Stmt::OMPSimdDirectiveClass:
     524                 :            :         case clang::Stmt::OMPForDirectiveClass:
     525                 :            :         case clang::Stmt::OMPForSimdDirectiveClass:
     526                 :            :         case clang::Stmt::OMPSectionsDirectiveClass:
     527                 :            :         case clang::Stmt::OMPSectionDirectiveClass:
     528                 :            :         case clang::Stmt::OMPSingleDirectiveClass:
     529                 :            :         case clang::Stmt::OMPMasterDirectiveClass:
     530                 :            :         case clang::Stmt::OMPCriticalDirectiveClass:
     531                 :            :         case clang::Stmt::OMPParallelForDirectiveClass:
     532                 :            :         case clang::Stmt::OMPParallelForSimdDirectiveClass:
     533                 :            :         case clang::Stmt::OMPParallelSectionsDirectiveClass:
     534                 :            :         case clang::Stmt::OMPTaskDirectiveClass:
     535                 :            :         case clang::Stmt::OMPTaskyieldDirectiveClass:
     536                 :            :         case clang::Stmt::OMPBarrierDirectiveClass:
     537                 :            :         case clang::Stmt::OMPTaskwaitDirectiveClass:
     538                 :            :         case clang::Stmt::OMPTaskgroupDirectiveClass:
     539                 :            :         case clang::Stmt::OMPFlushDirectiveClass:
     540                 :            :         case clang::Stmt::OMPOrderedDirectiveClass:
     541                 :            :         case clang::Stmt::OMPAtomicDirectiveClass:
     542                 :            :         case clang::Stmt::OMPTargetDirectiveClass:
     543                 :            :         case clang::Stmt::OMPTargetDataDirectiveClass:
     544                 :            :         case clang::Stmt::OMPTargetEnterDataDirectiveClass:
     545                 :            :         case clang::Stmt::OMPTargetExitDataDirectiveClass:
     546                 :            :         case clang::Stmt::OMPTargetParallelDirectiveClass:
     547                 :            :         case clang::Stmt::OMPTargetParallelForDirectiveClass:
     548                 :            :         case clang::Stmt::OMPTargetUpdateDirectiveClass:
     549                 :            :         case clang::Stmt::OMPTeamsDirectiveClass:
     550                 :            :         case clang::Stmt::OMPCancellationPointDirectiveClass:
     551                 :            :         case clang::Stmt::OMPCancelDirectiveClass:
     552                 :            :         case clang::Stmt::OMPTaskLoopDirectiveClass:
     553                 :            :         case clang::Stmt::OMPTaskLoopSimdDirectiveClass:
     554                 :            :         case clang::Stmt::OMPDistributeDirectiveClass:
     555                 :            :         case clang::Stmt::OMPDistributeParallelForDirectiveClass:
     556                 :            :         case clang::Stmt::OMPDistributeParallelForSimdDirectiveClass:
     557                 :            :         case clang::Stmt::OMPDistributeSimdDirectiveClass:
     558                 :            :         case clang::Stmt::OMPTargetParallelForSimdDirectiveClass:
     559                 :            :         case clang::Stmt::OMPTargetSimdDirectiveClass:
     560                 :            :         case clang::Stmt::OMPTeamsDistributeDirectiveClass:
     561                 :            :         case clang::Stmt::OMPTeamsDistributeSimdDirectiveClass:
     562                 :            :         case clang::Stmt::OMPTeamsDistributeParallelForSimdDirectiveClass:
     563                 :            :         case clang::Stmt::OMPTeamsDistributeParallelForDirectiveClass:
     564                 :            :         case clang::Stmt::OMPTargetTeamsDirectiveClass:
     565                 :            :         case clang::Stmt::OMPTargetTeamsDistributeDirectiveClass:
     566                 :            :         case clang::Stmt::OMPTargetTeamsDistributeParallelForDirectiveClass:
     567                 :            :         case clang::Stmt::OMPTargetTeamsDistributeParallelForSimdDirectiveClass:
     568                 :            :         case clang::Stmt::OMPTargetTeamsDistributeSimdDirectiveClass:
     569                 :          0 :             break;
     570                 :            :     }
     571                 :          0 : }
     572                 :            : 
     573                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_NoStmtClass == clang::Stmt::NoStmtClass, "");
     574                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_NullStmtClass == clang::Stmt::NullStmtClass, "");
     575                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_CompoundStmtClass == clang::Stmt::CompoundStmtClass, "");
     576                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_LabelStmtClass == clang::Stmt::LabelStmtClass, "");
     577                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_AttributedStmtClass == clang::Stmt::AttributedStmtClass, "");
     578                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_IfStmtClass == clang::Stmt::IfStmtClass, "");
     579                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_SwitchStmtClass == clang::Stmt::SwitchStmtClass, "");
     580                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_WhileStmtClass == clang::Stmt::WhileStmtClass, "");
     581                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_DoStmtClass == clang::Stmt::DoStmtClass, "");
     582                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_ForStmtClass == clang::Stmt::ForStmtClass, "");
     583                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_GotoStmtClass == clang::Stmt::GotoStmtClass, "");
     584                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_IndirectGotoStmtClass == clang::Stmt::IndirectGotoStmtClass, "");
     585                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_ContinueStmtClass == clang::Stmt::ContinueStmtClass, "");
     586                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_BreakStmtClass == clang::Stmt::BreakStmtClass, "");
     587                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_ReturnStmtClass == clang::Stmt::ReturnStmtClass, "");
     588                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_DeclStmtClass == clang::Stmt::DeclStmtClass, "");
     589                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_CaseStmtClass == clang::Stmt::CaseStmtClass, "");
     590                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_DefaultStmtClass == clang::Stmt::DefaultStmtClass, "");
     591                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_CapturedStmtClass == clang::Stmt::CapturedStmtClass, "");
     592                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_GCCAsmStmtClass == clang::Stmt::GCCAsmStmtClass, "");
     593                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_MSAsmStmtClass == clang::Stmt::MSAsmStmtClass, "");
     594                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_ObjCAtTryStmtClass == clang::Stmt::ObjCAtTryStmtClass, "");
     595                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_ObjCAtCatchStmtClass == clang::Stmt::ObjCAtCatchStmtClass, "");
     596                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_ObjCAtFinallyStmtClass == clang::Stmt::ObjCAtFinallyStmtClass, "");
     597                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_ObjCAtThrowStmtClass == clang::Stmt::ObjCAtThrowStmtClass, "");
     598                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_ObjCAtSynchronizedStmtClass == clang::Stmt::ObjCAtSynchronizedStmtClass, "");
     599                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_ObjCForCollectionStmtClass == clang::Stmt::ObjCForCollectionStmtClass, "");
     600                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_ObjCAutoreleasePoolStmtClass == clang::Stmt::ObjCAutoreleasePoolStmtClass, "");
     601                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_CXXCatchStmtClass == clang::Stmt::CXXCatchStmtClass, "");
     602                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_CXXTryStmtClass == clang::Stmt::CXXTryStmtClass, "");
     603                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_CXXForRangeStmtClass == clang::Stmt::CXXForRangeStmtClass, "");
     604                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_CoroutineBodyStmtClass == clang::Stmt::CoroutineBodyStmtClass, "");
     605                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_CoreturnStmtClass == clang::Stmt::CoreturnStmtClass, "");
     606                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_PredefinedExprClass == clang::Stmt::PredefinedExprClass, "");
     607                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_DeclRefExprClass == clang::Stmt::DeclRefExprClass, "");
     608                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_IntegerLiteralClass == clang::Stmt::IntegerLiteralClass, "");
     609                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_FixedPointLiteralClass == clang::Stmt::FixedPointLiteralClass, "");
     610                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_FloatingLiteralClass == clang::Stmt::FloatingLiteralClass, "");
     611                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_ImaginaryLiteralClass == clang::Stmt::ImaginaryLiteralClass, "");
     612                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_StringLiteralClass == clang::Stmt::StringLiteralClass, "");
     613                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_CharacterLiteralClass == clang::Stmt::CharacterLiteralClass, "");
     614                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_ParenExprClass == clang::Stmt::ParenExprClass, "");
     615                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_UnaryOperatorClass == clang::Stmt::UnaryOperatorClass, "");
     616                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_OffsetOfExprClass == clang::Stmt::OffsetOfExprClass, "");
     617                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_UnaryExprOrTypeTraitExprClass == clang::Stmt::UnaryExprOrTypeTraitExprClass, "");
     618                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_ArraySubscriptExprClass == clang::Stmt::ArraySubscriptExprClass, "");
     619                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPArraySectionExprClass == clang::Stmt::OMPArraySectionExprClass, "");
     620                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_CallExprClass == clang::Stmt::CallExprClass, "");
     621                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_MemberExprClass == clang::Stmt::MemberExprClass, "");
     622                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_BinaryOperatorClass == clang::Stmt::BinaryOperatorClass, "");
     623                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_CompoundAssignOperatorClass == clang::Stmt::CompoundAssignOperatorClass, "");
     624                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_ConditionalOperatorClass == clang::Stmt::ConditionalOperatorClass, "");
     625                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_BinaryConditionalOperatorClass == clang::Stmt::BinaryConditionalOperatorClass, "");
     626                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_ImplicitCastExprClass == clang::Stmt::ImplicitCastExprClass, "");
     627                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_CStyleCastExprClass == clang::Stmt::CStyleCastExprClass, "");
     628                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_CompoundLiteralExprClass == clang::Stmt::CompoundLiteralExprClass, "");
     629                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_ExtVectorElementExprClass == clang::Stmt::ExtVectorElementExprClass, "");
     630                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_InitListExprClass == clang::Stmt::InitListExprClass, "");
     631                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_DesignatedInitExprClass == clang::Stmt::DesignatedInitExprClass, "");
     632                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_DesignatedInitUpdateExprClass == clang::Stmt::DesignatedInitUpdateExprClass, "");
     633                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_ImplicitValueInitExprClass == clang::Stmt::ImplicitValueInitExprClass, "");
     634                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_NoInitExprClass == clang::Stmt::NoInitExprClass, "");
     635                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_ArrayInitLoopExprClass == clang::Stmt::ArrayInitLoopExprClass, "");
     636                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_ArrayInitIndexExprClass == clang::Stmt::ArrayInitIndexExprClass, "");
     637                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_ParenListExprClass == clang::Stmt::ParenListExprClass, "");
     638                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_VAArgExprClass == clang::Stmt::VAArgExprClass, "");
     639                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_GenericSelectionExprClass == clang::Stmt::GenericSelectionExprClass, "");
     640                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_PseudoObjectExprClass == clang::Stmt::PseudoObjectExprClass, "");
     641                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_ConstantExprClass == clang::Stmt::ConstantExprClass, "");
     642                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_AtomicExprClass == clang::Stmt::AtomicExprClass, "");
     643                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_AddrLabelExprClass == clang::Stmt::AddrLabelExprClass, "");
     644                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_StmtExprClass == clang::Stmt::StmtExprClass, "");
     645                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_ChooseExprClass == clang::Stmt::ChooseExprClass, "");
     646                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_GNUNullExprClass == clang::Stmt::GNUNullExprClass, "");
     647                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_CXXOperatorCallExprClass == clang::Stmt::CXXOperatorCallExprClass, "");
     648                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_CXXMemberCallExprClass == clang::Stmt::CXXMemberCallExprClass, "");
     649                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_CXXStaticCastExprClass == clang::Stmt::CXXStaticCastExprClass, "");
     650                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_CXXDynamicCastExprClass == clang::Stmt::CXXDynamicCastExprClass, "");
     651                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_CXXReinterpretCastExprClass == clang::Stmt::CXXReinterpretCastExprClass, "");
     652                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_CXXConstCastExprClass == clang::Stmt::CXXConstCastExprClass, "");
     653                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_CXXFunctionalCastExprClass == clang::Stmt::CXXFunctionalCastExprClass, "");
     654                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_CXXTypeidExprClass == clang::Stmt::CXXTypeidExprClass, "");
     655                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_UserDefinedLiteralClass == clang::Stmt::UserDefinedLiteralClass, "");
     656                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_CXXBoolLiteralExprClass == clang::Stmt::CXXBoolLiteralExprClass, "");
     657                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_CXXNullPtrLiteralExprClass == clang::Stmt::CXXNullPtrLiteralExprClass, "");
     658                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_CXXThisExprClass == clang::Stmt::CXXThisExprClass, "");
     659                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_CXXThrowExprClass == clang::Stmt::CXXThrowExprClass, "");
     660                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_CXXDefaultArgExprClass == clang::Stmt::CXXDefaultArgExprClass, "");
     661                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_CXXDefaultInitExprClass == clang::Stmt::CXXDefaultInitExprClass, "");
     662                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_CXXScalarValueInitExprClass == clang::Stmt::CXXScalarValueInitExprClass, "");
     663                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_CXXStdInitializerListExprClass == clang::Stmt::CXXStdInitializerListExprClass, "");
     664                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_CXXNewExprClass == clang::Stmt::CXXNewExprClass, "");
     665                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_CXXDeleteExprClass == clang::Stmt::CXXDeleteExprClass, "");
     666                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_CXXPseudoDestructorExprClass == clang::Stmt::CXXPseudoDestructorExprClass, "");
     667                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_TypeTraitExprClass == clang::Stmt::TypeTraitExprClass, "");
     668                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_ArrayTypeTraitExprClass == clang::Stmt::ArrayTypeTraitExprClass, "");
     669                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_ExpressionTraitExprClass == clang::Stmt::ExpressionTraitExprClass, "");
     670                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_DependentScopeDeclRefExprClass == clang::Stmt::DependentScopeDeclRefExprClass, "");
     671                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_CXXConstructExprClass == clang::Stmt::CXXConstructExprClass, "");
     672                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_CXXInheritedCtorInitExprClass == clang::Stmt::CXXInheritedCtorInitExprClass, "");
     673                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_CXXBindTemporaryExprClass == clang::Stmt::CXXBindTemporaryExprClass, "");
     674                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_ExprWithCleanupsClass == clang::Stmt::ExprWithCleanupsClass, "");
     675                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_CXXTemporaryObjectExprClass == clang::Stmt::CXXTemporaryObjectExprClass, "");
     676                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_CXXUnresolvedConstructExprClass == clang::Stmt::CXXUnresolvedConstructExprClass, "");
     677                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_CXXDependentScopeMemberExprClass == clang::Stmt::CXXDependentScopeMemberExprClass, "");
     678                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_UnresolvedLookupExprClass == clang::Stmt::UnresolvedLookupExprClass, "");
     679                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_UnresolvedMemberExprClass == clang::Stmt::UnresolvedMemberExprClass, "");
     680                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_CXXNoexceptExprClass == clang::Stmt::CXXNoexceptExprClass, "");
     681                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_PackExpansionExprClass == clang::Stmt::PackExpansionExprClass, "");
     682                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_SizeOfPackExprClass == clang::Stmt::SizeOfPackExprClass, "");
     683                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_SubstNonTypeTemplateParmExprClass == clang::Stmt::SubstNonTypeTemplateParmExprClass, "");
     684                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_SubstNonTypeTemplateParmPackExprClass == clang::Stmt::SubstNonTypeTemplateParmPackExprClass, "");
     685                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_FunctionParmPackExprClass == clang::Stmt::FunctionParmPackExprClass, "");
     686                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_MaterializeTemporaryExprClass == clang::Stmt::MaterializeTemporaryExprClass, "");
     687                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_LambdaExprClass == clang::Stmt::LambdaExprClass, "");
     688                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_CXXFoldExprClass == clang::Stmt::CXXFoldExprClass, "");
     689                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_CoawaitExprClass == clang::Stmt::CoawaitExprClass, "");
     690                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_DependentCoawaitExprClass == clang::Stmt::DependentCoawaitExprClass, "");
     691                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_CoyieldExprClass == clang::Stmt::CoyieldExprClass, "");
     692                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_ObjCStringLiteralClass == clang::Stmt::ObjCStringLiteralClass, "");
     693                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_ObjCBoxedExprClass == clang::Stmt::ObjCBoxedExprClass, "");
     694                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_ObjCArrayLiteralClass == clang::Stmt::ObjCArrayLiteralClass, "");
     695                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_ObjCDictionaryLiteralClass == clang::Stmt::ObjCDictionaryLiteralClass, "");
     696                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_ObjCEncodeExprClass == clang::Stmt::ObjCEncodeExprClass, "");
     697                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_ObjCMessageExprClass == clang::Stmt::ObjCMessageExprClass, "");
     698                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_ObjCSelectorExprClass == clang::Stmt::ObjCSelectorExprClass, "");
     699                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_ObjCProtocolExprClass == clang::Stmt::ObjCProtocolExprClass, "");
     700                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_ObjCIvarRefExprClass == clang::Stmt::ObjCIvarRefExprClass, "");
     701                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_ObjCPropertyRefExprClass == clang::Stmt::ObjCPropertyRefExprClass, "");
     702                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_ObjCIsaExprClass == clang::Stmt::ObjCIsaExprClass, "");
     703                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_ObjCIndirectCopyRestoreExprClass == clang::Stmt::ObjCIndirectCopyRestoreExprClass, "");
     704                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_ObjCBoolLiteralExprClass == clang::Stmt::ObjCBoolLiteralExprClass, "");
     705                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_ObjCSubscriptRefExprClass == clang::Stmt::ObjCSubscriptRefExprClass, "");
     706                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_ObjCAvailabilityCheckExprClass == clang::Stmt::ObjCAvailabilityCheckExprClass, "");
     707                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_ObjCBridgedCastExprClass == clang::Stmt::ObjCBridgedCastExprClass, "");
     708                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_CUDAKernelCallExprClass == clang::Stmt::CUDAKernelCallExprClass, "");
     709                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_ShuffleVectorExprClass == clang::Stmt::ShuffleVectorExprClass, "");
     710                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_ConvertVectorExprClass == clang::Stmt::ConvertVectorExprClass, "");
     711                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_BlockExprClass == clang::Stmt::BlockExprClass, "");
     712                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_OpaqueValueExprClass == clang::Stmt::OpaqueValueExprClass, "");
     713                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_TypoExprClass == clang::Stmt::TypoExprClass, "");
     714                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_MSPropertyRefExprClass == clang::Stmt::MSPropertyRefExprClass, "");
     715                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_MSPropertySubscriptExprClass == clang::Stmt::MSPropertySubscriptExprClass, "");
     716                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_CXXUuidofExprClass == clang::Stmt::CXXUuidofExprClass, "");
     717                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_SEHTryStmtClass == clang::Stmt::SEHTryStmtClass, "");
     718                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_SEHExceptStmtClass == clang::Stmt::SEHExceptStmtClass, "");
     719                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_SEHFinallyStmtClass == clang::Stmt::SEHFinallyStmtClass, "");
     720                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_SEHLeaveStmtClass == clang::Stmt::SEHLeaveStmtClass, "");
     721                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_MSDependentExistsStmtClass == clang::Stmt::MSDependentExistsStmtClass, "");
     722                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_AsTypeExprClass == clang::Stmt::AsTypeExprClass, "");
     723                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPParallelDirectiveClass == clang::Stmt::OMPParallelDirectiveClass, "");
     724                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPSimdDirectiveClass == clang::Stmt::OMPSimdDirectiveClass, "");
     725                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPForDirectiveClass == clang::Stmt::OMPForDirectiveClass, "");
     726                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPForSimdDirectiveClass == clang::Stmt::OMPForSimdDirectiveClass, "");
     727                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPSectionsDirectiveClass == clang::Stmt::OMPSectionsDirectiveClass, "");
     728                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPSectionDirectiveClass == clang::Stmt::OMPSectionDirectiveClass, "");
     729                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPSingleDirectiveClass == clang::Stmt::OMPSingleDirectiveClass, "");
     730                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPMasterDirectiveClass == clang::Stmt::OMPMasterDirectiveClass, "");
     731                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPCriticalDirectiveClass == clang::Stmt::OMPCriticalDirectiveClass, "");
     732                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPParallelForDirectiveClass == clang::Stmt::OMPParallelForDirectiveClass, "");
     733                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPParallelForSimdDirectiveClass == clang::Stmt::OMPParallelForSimdDirectiveClass, "");
     734                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPParallelSectionsDirectiveClass == clang::Stmt::OMPParallelSectionsDirectiveClass, "");
     735                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPTaskDirectiveClass == clang::Stmt::OMPTaskDirectiveClass, "");
     736                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPTaskyieldDirectiveClass == clang::Stmt::OMPTaskyieldDirectiveClass, "");
     737                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPBarrierDirectiveClass == clang::Stmt::OMPBarrierDirectiveClass, "");
     738                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPTaskwaitDirectiveClass == clang::Stmt::OMPTaskwaitDirectiveClass, "");
     739                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPTaskgroupDirectiveClass == clang::Stmt::OMPTaskgroupDirectiveClass, "");
     740                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPFlushDirectiveClass == clang::Stmt::OMPFlushDirectiveClass, "");
     741                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPOrderedDirectiveClass == clang::Stmt::OMPOrderedDirectiveClass, "");
     742                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPAtomicDirectiveClass == clang::Stmt::OMPAtomicDirectiveClass, "");
     743                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPTargetDirectiveClass == clang::Stmt::OMPTargetDirectiveClass, "");
     744                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPTargetDataDirectiveClass == clang::Stmt::OMPTargetDataDirectiveClass, "");
     745                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPTargetEnterDataDirectiveClass == clang::Stmt::OMPTargetEnterDataDirectiveClass, "");
     746                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPTargetExitDataDirectiveClass == clang::Stmt::OMPTargetExitDataDirectiveClass, "");
     747                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPTargetParallelDirectiveClass == clang::Stmt::OMPTargetParallelDirectiveClass, "");
     748                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPTargetParallelForDirectiveClass == clang::Stmt::OMPTargetParallelForDirectiveClass, "");
     749                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPTargetUpdateDirectiveClass == clang::Stmt::OMPTargetUpdateDirectiveClass, "");
     750                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPTeamsDirectiveClass == clang::Stmt::OMPTeamsDirectiveClass, "");
     751                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPCancellationPointDirectiveClass == clang::Stmt::OMPCancellationPointDirectiveClass, "");
     752                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPCancelDirectiveClass == clang::Stmt::OMPCancelDirectiveClass, "");
     753                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPTaskLoopDirectiveClass == clang::Stmt::OMPTaskLoopDirectiveClass, "");
     754                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPTaskLoopSimdDirectiveClass == clang::Stmt::OMPTaskLoopSimdDirectiveClass, "");
     755                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPDistributeDirectiveClass == clang::Stmt::OMPDistributeDirectiveClass, "");
     756                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPDistributeParallelForDirectiveClass == clang::Stmt::OMPDistributeParallelForDirectiveClass, "");
     757                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPDistributeParallelForSimdDirectiveClass == clang::Stmt::OMPDistributeParallelForSimdDirectiveClass, "");
     758                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPDistributeSimdDirectiveClass == clang::Stmt::OMPDistributeSimdDirectiveClass, "");
     759                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPTargetParallelForSimdDirectiveClass == clang::Stmt::OMPTargetParallelForSimdDirectiveClass, "");
     760                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPTargetSimdDirectiveClass == clang::Stmt::OMPTargetSimdDirectiveClass, "");
     761                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPTeamsDistributeDirectiveClass == clang::Stmt::OMPTeamsDistributeDirectiveClass, "");
     762                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPTeamsDistributeSimdDirectiveClass == clang::Stmt::OMPTeamsDistributeSimdDirectiveClass, "");
     763                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPTeamsDistributeParallelForSimdDirectiveClass == clang::Stmt::OMPTeamsDistributeParallelForSimdDirectiveClass, "");
     764                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPTeamsDistributeParallelForDirectiveClass == clang::Stmt::OMPTeamsDistributeParallelForDirectiveClass, "");
     765                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPTargetTeamsDirectiveClass == clang::Stmt::OMPTargetTeamsDirectiveClass, "");
     766                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPTargetTeamsDistributeDirectiveClass == clang::Stmt::OMPTargetTeamsDistributeDirectiveClass, "");
     767                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPTargetTeamsDistributeParallelForDirectiveClass == clang::Stmt::OMPTargetTeamsDistributeParallelForDirectiveClass, "");
     768                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPTargetTeamsDistributeParallelForSimdDirectiveClass == clang::Stmt::OMPTargetTeamsDistributeParallelForSimdDirectiveClass, "");
     769                 :            : static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPTargetTeamsDistributeSimdDirectiveClass == clang::Stmt::OMPTargetTeamsDistributeSimdDirectiveClass, "");
     770                 :            : 
     771                 :          0 : void ZigClang_detect_enum_APValueKind(clang::APValue::ValueKind x) {
     772         [ #  # ]:          0 :     switch (x) {
     773                 :          0 :         case clang::APValue::Uninitialized:
     774                 :            :         case clang::APValue::Int:
     775                 :            :         case clang::APValue::Float:
     776                 :            :         case clang::APValue::ComplexInt:
     777                 :            :         case clang::APValue::ComplexFloat:
     778                 :            :         case clang::APValue::LValue:
     779                 :            :         case clang::APValue::Vector:
     780                 :            :         case clang::APValue::Array:
     781                 :            :         case clang::APValue::Struct:
     782                 :            :         case clang::APValue::Union:
     783                 :            :         case clang::APValue::MemberPointer:
     784                 :            :         case clang::APValue::AddrLabelDiff:
     785                 :          0 :             break;
     786                 :            :     }
     787                 :          0 : }
     788                 :            : 
     789                 :            : static_assert((clang::APValue::ValueKind)ZigClangAPValueUninitialized == clang::APValue::Uninitialized, "");
     790                 :            : static_assert((clang::APValue::ValueKind)ZigClangAPValueInt == clang::APValue::Int, "");
     791                 :            : static_assert((clang::APValue::ValueKind)ZigClangAPValueFloat == clang::APValue::Float, "");
     792                 :            : static_assert((clang::APValue::ValueKind)ZigClangAPValueComplexInt == clang::APValue::ComplexInt, "");
     793                 :            : static_assert((clang::APValue::ValueKind)ZigClangAPValueComplexFloat == clang::APValue::ComplexFloat, "");
     794                 :            : static_assert((clang::APValue::ValueKind)ZigClangAPValueLValue == clang::APValue::LValue, "");
     795                 :            : static_assert((clang::APValue::ValueKind)ZigClangAPValueVector == clang::APValue::Vector, "");
     796                 :            : static_assert((clang::APValue::ValueKind)ZigClangAPValueArray == clang::APValue::Array, "");
     797                 :            : static_assert((clang::APValue::ValueKind)ZigClangAPValueStruct == clang::APValue::Struct, "");
     798                 :            : static_assert((clang::APValue::ValueKind)ZigClangAPValueUnion == clang::APValue::Union, "");
     799                 :            : static_assert((clang::APValue::ValueKind)ZigClangAPValueMemberPointer == clang::APValue::MemberPointer, "");
     800                 :            : static_assert((clang::APValue::ValueKind)ZigClangAPValueAddrLabelDiff == clang::APValue::AddrLabelDiff, "");
     801                 :            : 
     802                 :            : 
     803                 :          0 : void ZigClang_detect_enum_DeclKind(clang::Decl::Kind x) {
     804         [ #  # ]:          0 :     switch (x) {
     805                 :          0 :         case clang::Decl::AccessSpec:
     806                 :            :         case clang::Decl::Block:
     807                 :            :         case clang::Decl::Captured:
     808                 :            :         case clang::Decl::ClassScopeFunctionSpecialization:
     809                 :            :         case clang::Decl::Empty:
     810                 :            :         case clang::Decl::Export:
     811                 :            :         case clang::Decl::ExternCContext:
     812                 :            :         case clang::Decl::FileScopeAsm:
     813                 :            :         case clang::Decl::Friend:
     814                 :            :         case clang::Decl::FriendTemplate:
     815                 :            :         case clang::Decl::Import:
     816                 :            :         case clang::Decl::LinkageSpec:
     817                 :            :         case clang::Decl::Label:
     818                 :            :         case clang::Decl::Namespace:
     819                 :            :         case clang::Decl::NamespaceAlias:
     820                 :            :         case clang::Decl::ObjCCompatibleAlias:
     821                 :            :         case clang::Decl::ObjCCategory:
     822                 :            :         case clang::Decl::ObjCCategoryImpl:
     823                 :            :         case clang::Decl::ObjCImplementation:
     824                 :            :         case clang::Decl::ObjCInterface:
     825                 :            :         case clang::Decl::ObjCProtocol:
     826                 :            :         case clang::Decl::ObjCMethod:
     827                 :            :         case clang::Decl::ObjCProperty:
     828                 :            :         case clang::Decl::BuiltinTemplate:
     829                 :            :         case clang::Decl::ClassTemplate:
     830                 :            :         case clang::Decl::FunctionTemplate:
     831                 :            :         case clang::Decl::TypeAliasTemplate:
     832                 :            :         case clang::Decl::VarTemplate:
     833                 :            :         case clang::Decl::TemplateTemplateParm:
     834                 :            :         case clang::Decl::Enum:
     835                 :            :         case clang::Decl::Record:
     836                 :            :         case clang::Decl::CXXRecord:
     837                 :            :         case clang::Decl::ClassTemplateSpecialization:
     838                 :            :         case clang::Decl::ClassTemplatePartialSpecialization:
     839                 :            :         case clang::Decl::TemplateTypeParm:
     840                 :            :         case clang::Decl::ObjCTypeParam:
     841                 :            :         case clang::Decl::TypeAlias:
     842                 :            :         case clang::Decl::Typedef:
     843                 :            :         case clang::Decl::UnresolvedUsingTypename:
     844                 :            :         case clang::Decl::Using:
     845                 :            :         case clang::Decl::UsingDirective:
     846                 :            :         case clang::Decl::UsingPack:
     847                 :            :         case clang::Decl::UsingShadow:
     848                 :            :         case clang::Decl::ConstructorUsingShadow:
     849                 :            :         case clang::Decl::Binding:
     850                 :            :         case clang::Decl::Field:
     851                 :            :         case clang::Decl::ObjCAtDefsField:
     852                 :            :         case clang::Decl::ObjCIvar:
     853                 :            :         case clang::Decl::Function:
     854                 :            :         case clang::Decl::CXXDeductionGuide:
     855                 :            :         case clang::Decl::CXXMethod:
     856                 :            :         case clang::Decl::CXXConstructor:
     857                 :            :         case clang::Decl::CXXConversion:
     858                 :            :         case clang::Decl::CXXDestructor:
     859                 :            :         case clang::Decl::MSProperty:
     860                 :            :         case clang::Decl::NonTypeTemplateParm:
     861                 :            :         case clang::Decl::Var:
     862                 :            :         case clang::Decl::Decomposition:
     863                 :            :         case clang::Decl::ImplicitParam:
     864                 :            :         case clang::Decl::OMPCapturedExpr:
     865                 :            :         case clang::Decl::ParmVar:
     866                 :            :         case clang::Decl::VarTemplateSpecialization:
     867                 :            :         case clang::Decl::VarTemplatePartialSpecialization:
     868                 :            :         case clang::Decl::EnumConstant:
     869                 :            :         case clang::Decl::IndirectField:
     870                 :            :         case clang::Decl::OMPDeclareReduction:
     871                 :            :         case clang::Decl::UnresolvedUsingValue:
     872                 :            :         case clang::Decl::OMPRequires:
     873                 :            :         case clang::Decl::OMPThreadPrivate:
     874                 :            :         case clang::Decl::ObjCPropertyImpl:
     875                 :            :         case clang::Decl::PragmaComment:
     876                 :            :         case clang::Decl::PragmaDetectMismatch:
     877                 :            :         case clang::Decl::StaticAssert:
     878                 :            :         case clang::Decl::TranslationUnit:
     879                 :          0 :             break;
     880                 :            :     }
     881                 :          0 : }
     882                 :            : 
     883                 :            : static_assert((clang::Decl::Kind)ZigClangDeclAccessSpec == clang::Decl::AccessSpec, "");
     884                 :            : static_assert((clang::Decl::Kind)ZigClangDeclBlock == clang::Decl::Block, "");
     885                 :            : static_assert((clang::Decl::Kind)ZigClangDeclCaptured == clang::Decl::Captured, "");
     886                 :            : static_assert((clang::Decl::Kind)ZigClangDeclClassScopeFunctionSpecialization == clang::Decl::ClassScopeFunctionSpecialization, "");
     887                 :            : static_assert((clang::Decl::Kind)ZigClangDeclEmpty == clang::Decl::Empty, "");
     888                 :            : static_assert((clang::Decl::Kind)ZigClangDeclExport == clang::Decl::Export, "");
     889                 :            : static_assert((clang::Decl::Kind)ZigClangDeclExternCContext == clang::Decl::ExternCContext, "");
     890                 :            : static_assert((clang::Decl::Kind)ZigClangDeclFileScopeAsm == clang::Decl::FileScopeAsm, "");
     891                 :            : static_assert((clang::Decl::Kind)ZigClangDeclFriend == clang::Decl::Friend, "");
     892                 :            : static_assert((clang::Decl::Kind)ZigClangDeclFriendTemplate == clang::Decl::FriendTemplate, "");
     893                 :            : static_assert((clang::Decl::Kind)ZigClangDeclImport == clang::Decl::Import, "");
     894                 :            : static_assert((clang::Decl::Kind)ZigClangDeclLinkageSpec == clang::Decl::LinkageSpec, "");
     895                 :            : static_assert((clang::Decl::Kind)ZigClangDeclLabel == clang::Decl::Label, "");
     896                 :            : static_assert((clang::Decl::Kind)ZigClangDeclNamespace == clang::Decl::Namespace, "");
     897                 :            : static_assert((clang::Decl::Kind)ZigClangDeclNamespaceAlias == clang::Decl::NamespaceAlias, "");
     898                 :            : static_assert((clang::Decl::Kind)ZigClangDeclObjCCompatibleAlias == clang::Decl::ObjCCompatibleAlias, "");
     899                 :            : static_assert((clang::Decl::Kind)ZigClangDeclObjCCategory == clang::Decl::ObjCCategory, "");
     900                 :            : static_assert((clang::Decl::Kind)ZigClangDeclObjCCategoryImpl == clang::Decl::ObjCCategoryImpl, "");
     901                 :            : static_assert((clang::Decl::Kind)ZigClangDeclObjCImplementation == clang::Decl::ObjCImplementation, "");
     902                 :            : static_assert((clang::Decl::Kind)ZigClangDeclObjCInterface == clang::Decl::ObjCInterface, "");
     903                 :            : static_assert((clang::Decl::Kind)ZigClangDeclObjCProtocol == clang::Decl::ObjCProtocol, "");
     904                 :            : static_assert((clang::Decl::Kind)ZigClangDeclObjCMethod == clang::Decl::ObjCMethod, "");
     905                 :            : static_assert((clang::Decl::Kind)ZigClangDeclObjCProperty == clang::Decl::ObjCProperty, "");
     906                 :            : static_assert((clang::Decl::Kind)ZigClangDeclBuiltinTemplate == clang::Decl::BuiltinTemplate, "");
     907                 :            : static_assert((clang::Decl::Kind)ZigClangDeclClassTemplate == clang::Decl::ClassTemplate, "");
     908                 :            : static_assert((clang::Decl::Kind)ZigClangDeclFunctionTemplate == clang::Decl::FunctionTemplate, "");
     909                 :            : static_assert((clang::Decl::Kind)ZigClangDeclTypeAliasTemplate == clang::Decl::TypeAliasTemplate, "");
     910                 :            : static_assert((clang::Decl::Kind)ZigClangDeclVarTemplate == clang::Decl::VarTemplate, "");
     911                 :            : static_assert((clang::Decl::Kind)ZigClangDeclTemplateTemplateParm == clang::Decl::TemplateTemplateParm, "");
     912                 :            : static_assert((clang::Decl::Kind)ZigClangDeclEnum == clang::Decl::Enum, "");
     913                 :            : static_assert((clang::Decl::Kind)ZigClangDeclRecord == clang::Decl::Record, "");
     914                 :            : static_assert((clang::Decl::Kind)ZigClangDeclCXXRecord == clang::Decl::CXXRecord, "");
     915                 :            : static_assert((clang::Decl::Kind)ZigClangDeclClassTemplateSpecialization == clang::Decl::ClassTemplateSpecialization, "");
     916                 :            : static_assert((clang::Decl::Kind)ZigClangDeclClassTemplatePartialSpecialization == clang::Decl::ClassTemplatePartialSpecialization, "");
     917                 :            : static_assert((clang::Decl::Kind)ZigClangDeclTemplateTypeParm == clang::Decl::TemplateTypeParm, "");
     918                 :            : static_assert((clang::Decl::Kind)ZigClangDeclObjCTypeParam == clang::Decl::ObjCTypeParam, "");
     919                 :            : static_assert((clang::Decl::Kind)ZigClangDeclTypeAlias == clang::Decl::TypeAlias, "");
     920                 :            : static_assert((clang::Decl::Kind)ZigClangDeclTypedef == clang::Decl::Typedef, "");
     921                 :            : static_assert((clang::Decl::Kind)ZigClangDeclUnresolvedUsingTypename == clang::Decl::UnresolvedUsingTypename, "");
     922                 :            : static_assert((clang::Decl::Kind)ZigClangDeclUsing == clang::Decl::Using, "");
     923                 :            : static_assert((clang::Decl::Kind)ZigClangDeclUsingDirective == clang::Decl::UsingDirective, "");
     924                 :            : static_assert((clang::Decl::Kind)ZigClangDeclUsingPack == clang::Decl::UsingPack, "");
     925                 :            : static_assert((clang::Decl::Kind)ZigClangDeclUsingShadow == clang::Decl::UsingShadow, "");
     926                 :            : static_assert((clang::Decl::Kind)ZigClangDeclConstructorUsingShadow == clang::Decl::ConstructorUsingShadow, "");
     927                 :            : static_assert((clang::Decl::Kind)ZigClangDeclBinding == clang::Decl::Binding, "");
     928                 :            : static_assert((clang::Decl::Kind)ZigClangDeclField == clang::Decl::Field, "");
     929                 :            : static_assert((clang::Decl::Kind)ZigClangDeclObjCAtDefsField == clang::Decl::ObjCAtDefsField, "");
     930                 :            : static_assert((clang::Decl::Kind)ZigClangDeclObjCIvar == clang::Decl::ObjCIvar, "");
     931                 :            : static_assert((clang::Decl::Kind)ZigClangDeclFunction == clang::Decl::Function, "");
     932                 :            : static_assert((clang::Decl::Kind)ZigClangDeclCXXDeductionGuide == clang::Decl::CXXDeductionGuide, "");
     933                 :            : static_assert((clang::Decl::Kind)ZigClangDeclCXXMethod == clang::Decl::CXXMethod, "");
     934                 :            : static_assert((clang::Decl::Kind)ZigClangDeclCXXConstructor == clang::Decl::CXXConstructor, "");
     935                 :            : static_assert((clang::Decl::Kind)ZigClangDeclCXXConversion == clang::Decl::CXXConversion, "");
     936                 :            : static_assert((clang::Decl::Kind)ZigClangDeclCXXDestructor == clang::Decl::CXXDestructor, "");
     937                 :            : static_assert((clang::Decl::Kind)ZigClangDeclMSProperty == clang::Decl::MSProperty, "");
     938                 :            : static_assert((clang::Decl::Kind)ZigClangDeclNonTypeTemplateParm == clang::Decl::NonTypeTemplateParm, "");
     939                 :            : static_assert((clang::Decl::Kind)ZigClangDeclVar == clang::Decl::Var, "");
     940                 :            : static_assert((clang::Decl::Kind)ZigClangDeclDecomposition == clang::Decl::Decomposition, "");
     941                 :            : static_assert((clang::Decl::Kind)ZigClangDeclImplicitParam == clang::Decl::ImplicitParam, "");
     942                 :            : static_assert((clang::Decl::Kind)ZigClangDeclOMPCapturedExpr == clang::Decl::OMPCapturedExpr, "");
     943                 :            : static_assert((clang::Decl::Kind)ZigClangDeclParmVar == clang::Decl::ParmVar, "");
     944                 :            : static_assert((clang::Decl::Kind)ZigClangDeclVarTemplateSpecialization == clang::Decl::VarTemplateSpecialization, "");
     945                 :            : static_assert((clang::Decl::Kind)ZigClangDeclVarTemplatePartialSpecialization == clang::Decl::VarTemplatePartialSpecialization, "");
     946                 :            : static_assert((clang::Decl::Kind)ZigClangDeclEnumConstant == clang::Decl::EnumConstant, "");
     947                 :            : static_assert((clang::Decl::Kind)ZigClangDeclIndirectField == clang::Decl::IndirectField, "");
     948                 :            : static_assert((clang::Decl::Kind)ZigClangDeclOMPDeclareReduction == clang::Decl::OMPDeclareReduction, "");
     949                 :            : static_assert((clang::Decl::Kind)ZigClangDeclUnresolvedUsingValue == clang::Decl::UnresolvedUsingValue, "");
     950                 :            : static_assert((clang::Decl::Kind)ZigClangDeclOMPRequires == clang::Decl::OMPRequires, "");
     951                 :            : static_assert((clang::Decl::Kind)ZigClangDeclOMPThreadPrivate == clang::Decl::OMPThreadPrivate, "");
     952                 :            : static_assert((clang::Decl::Kind)ZigClangDeclObjCPropertyImpl == clang::Decl::ObjCPropertyImpl, "");
     953                 :            : static_assert((clang::Decl::Kind)ZigClangDeclPragmaComment == clang::Decl::PragmaComment, "");
     954                 :            : static_assert((clang::Decl::Kind)ZigClangDeclPragmaDetectMismatch == clang::Decl::PragmaDetectMismatch, "");
     955                 :            : static_assert((clang::Decl::Kind)ZigClangDeclStaticAssert == clang::Decl::StaticAssert, "");
     956                 :            : static_assert((clang::Decl::Kind)ZigClangDeclTranslationUnit == clang::Decl::TranslationUnit, "");
     957                 :            : 
     958                 :          0 : void ZigClang_detect_enum_BuiltinTypeKind(clang::BuiltinType::Kind x) {
     959         [ #  # ]:          0 :     switch (x) {
     960                 :          0 :         case clang::BuiltinType::OCLImage1dRO:
     961                 :            :         case clang::BuiltinType::OCLImage1dArrayRO:
     962                 :            :         case clang::BuiltinType::OCLImage1dBufferRO:
     963                 :            :         case clang::BuiltinType::OCLImage2dRO:
     964                 :            :         case clang::BuiltinType::OCLImage2dArrayRO:
     965                 :            :         case clang::BuiltinType::OCLImage2dDepthRO:
     966                 :            :         case clang::BuiltinType::OCLImage2dArrayDepthRO:
     967                 :            :         case clang::BuiltinType::OCLImage2dMSAARO:
     968                 :            :         case clang::BuiltinType::OCLImage2dArrayMSAARO:
     969                 :            :         case clang::BuiltinType::OCLImage2dMSAADepthRO:
     970                 :            :         case clang::BuiltinType::OCLImage2dArrayMSAADepthRO:
     971                 :            :         case clang::BuiltinType::OCLImage3dRO:
     972                 :            :         case clang::BuiltinType::OCLImage1dWO:
     973                 :            :         case clang::BuiltinType::OCLImage1dArrayWO:
     974                 :            :         case clang::BuiltinType::OCLImage1dBufferWO:
     975                 :            :         case clang::BuiltinType::OCLImage2dWO:
     976                 :            :         case clang::BuiltinType::OCLImage2dArrayWO:
     977                 :            :         case clang::BuiltinType::OCLImage2dDepthWO:
     978                 :            :         case clang::BuiltinType::OCLImage2dArrayDepthWO:
     979                 :            :         case clang::BuiltinType::OCLImage2dMSAAWO:
     980                 :            :         case clang::BuiltinType::OCLImage2dArrayMSAAWO:
     981                 :            :         case clang::BuiltinType::OCLImage2dMSAADepthWO:
     982                 :            :         case clang::BuiltinType::OCLImage2dArrayMSAADepthWO:
     983                 :            :         case clang::BuiltinType::OCLImage3dWO:
     984                 :            :         case clang::BuiltinType::OCLImage1dRW:
     985                 :            :         case clang::BuiltinType::OCLImage1dArrayRW:
     986                 :            :         case clang::BuiltinType::OCLImage1dBufferRW:
     987                 :            :         case clang::BuiltinType::OCLImage2dRW:
     988                 :            :         case clang::BuiltinType::OCLImage2dArrayRW:
     989                 :            :         case clang::BuiltinType::OCLImage2dDepthRW:
     990                 :            :         case clang::BuiltinType::OCLImage2dArrayDepthRW:
     991                 :            :         case clang::BuiltinType::OCLImage2dMSAARW:
     992                 :            :         case clang::BuiltinType::OCLImage2dArrayMSAARW:
     993                 :            :         case clang::BuiltinType::OCLImage2dMSAADepthRW:
     994                 :            :         case clang::BuiltinType::OCLImage2dArrayMSAADepthRW:
     995                 :            :         case clang::BuiltinType::OCLImage3dRW:
     996                 :            :         case clang::BuiltinType::OCLIntelSubgroupAVCMcePayload:
     997                 :            :         case clang::BuiltinType::OCLIntelSubgroupAVCImePayload:
     998                 :            :         case clang::BuiltinType::OCLIntelSubgroupAVCRefPayload:
     999                 :            :         case clang::BuiltinType::OCLIntelSubgroupAVCSicPayload:
    1000                 :            :         case clang::BuiltinType::OCLIntelSubgroupAVCMceResult:
    1001                 :            :         case clang::BuiltinType::OCLIntelSubgroupAVCImeResult:
    1002                 :            :         case clang::BuiltinType::OCLIntelSubgroupAVCRefResult:
    1003                 :            :         case clang::BuiltinType::OCLIntelSubgroupAVCSicResult:
    1004                 :            :         case clang::BuiltinType::OCLIntelSubgroupAVCImeResultSingleRefStreamout:
    1005                 :            :         case clang::BuiltinType::OCLIntelSubgroupAVCImeResultDualRefStreamout:
    1006                 :            :         case clang::BuiltinType::OCLIntelSubgroupAVCImeSingleRefStreamin:
    1007                 :            :         case clang::BuiltinType::OCLIntelSubgroupAVCImeDualRefStreamin:
    1008                 :            :         case clang::BuiltinType::Void:
    1009                 :            :         case clang::BuiltinType::Bool:
    1010                 :            :         case clang::BuiltinType::Char_U:
    1011                 :            :         case clang::BuiltinType::UChar:
    1012                 :            :         case clang::BuiltinType::WChar_U:
    1013                 :            :         case clang::BuiltinType::Char8:
    1014                 :            :         case clang::BuiltinType::Char16:
    1015                 :            :         case clang::BuiltinType::Char32:
    1016                 :            :         case clang::BuiltinType::UShort:
    1017                 :            :         case clang::BuiltinType::UInt:
    1018                 :            :         case clang::BuiltinType::ULong:
    1019                 :            :         case clang::BuiltinType::ULongLong:
    1020                 :            :         case clang::BuiltinType::UInt128:
    1021                 :            :         case clang::BuiltinType::Char_S:
    1022                 :            :         case clang::BuiltinType::SChar:
    1023                 :            :         case clang::BuiltinType::WChar_S:
    1024                 :            :         case clang::BuiltinType::Short:
    1025                 :            :         case clang::BuiltinType::Int:
    1026                 :            :         case clang::BuiltinType::Long:
    1027                 :            :         case clang::BuiltinType::LongLong:
    1028                 :            :         case clang::BuiltinType::Int128:
    1029                 :            :         case clang::BuiltinType::ShortAccum:
    1030                 :            :         case clang::BuiltinType::Accum:
    1031                 :            :         case clang::BuiltinType::LongAccum:
    1032                 :            :         case clang::BuiltinType::UShortAccum:
    1033                 :            :         case clang::BuiltinType::UAccum:
    1034                 :            :         case clang::BuiltinType::ULongAccum:
    1035                 :            :         case clang::BuiltinType::ShortFract:
    1036                 :            :         case clang::BuiltinType::Fract:
    1037                 :            :         case clang::BuiltinType::LongFract:
    1038                 :            :         case clang::BuiltinType::UShortFract:
    1039                 :            :         case clang::BuiltinType::UFract:
    1040                 :            :         case clang::BuiltinType::ULongFract:
    1041                 :            :         case clang::BuiltinType::SatShortAccum:
    1042                 :            :         case clang::BuiltinType::SatAccum:
    1043                 :            :         case clang::BuiltinType::SatLongAccum:
    1044                 :            :         case clang::BuiltinType::SatUShortAccum:
    1045                 :            :         case clang::BuiltinType::SatUAccum:
    1046                 :            :         case clang::BuiltinType::SatULongAccum:
    1047                 :            :         case clang::BuiltinType::SatShortFract:
    1048                 :            :         case clang::BuiltinType::SatFract:
    1049                 :            :         case clang::BuiltinType::SatLongFract:
    1050                 :            :         case clang::BuiltinType::SatUShortFract:
    1051                 :            :         case clang::BuiltinType::SatUFract:
    1052                 :            :         case clang::BuiltinType::SatULongFract:
    1053                 :            :         case clang::BuiltinType::Half:
    1054                 :            :         case clang::BuiltinType::Float:
    1055                 :            :         case clang::BuiltinType::Double:
    1056                 :            :         case clang::BuiltinType::LongDouble:
    1057                 :            :         case clang::BuiltinType::Float16:
    1058                 :            :         case clang::BuiltinType::Float128:
    1059                 :            :         case clang::BuiltinType::NullPtr:
    1060                 :            :         case clang::BuiltinType::ObjCId:
    1061                 :            :         case clang::BuiltinType::ObjCClass:
    1062                 :            :         case clang::BuiltinType::ObjCSel:
    1063                 :            :         case clang::BuiltinType::OCLSampler:
    1064                 :            :         case clang::BuiltinType::OCLEvent:
    1065                 :            :         case clang::BuiltinType::OCLClkEvent:
    1066                 :            :         case clang::BuiltinType::OCLQueue:
    1067                 :            :         case clang::BuiltinType::OCLReserveID:
    1068                 :            :         case clang::BuiltinType::Dependent:
    1069                 :            :         case clang::BuiltinType::Overload:
    1070                 :            :         case clang::BuiltinType::BoundMember:
    1071                 :            :         case clang::BuiltinType::PseudoObject:
    1072                 :            :         case clang::BuiltinType::UnknownAny:
    1073                 :            :         case clang::BuiltinType::BuiltinFn:
    1074                 :            :         case clang::BuiltinType::ARCUnbridgedCast:
    1075                 :            :         case clang::BuiltinType::OMPArraySection:
    1076                 :          0 :             break;
    1077                 :            :     }
    1078                 :          0 : }
    1079                 :            : 
    1080                 :            : static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeOCLImage1dRO == clang::BuiltinType::OCLImage1dRO, "");
    1081                 :            : static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeOCLImage1dArrayRO == clang::BuiltinType::OCLImage1dArrayRO, "");
    1082                 :            : static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeOCLImage1dBufferRO == clang::BuiltinType::OCLImage1dBufferRO, "");
    1083                 :            : static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeOCLImage2dRO == clang::BuiltinType::OCLImage2dRO, "");
    1084                 :            : static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeOCLImage2dArrayRO == clang::BuiltinType::OCLImage2dArrayRO, "");
    1085                 :            : static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeOCLImage2dDepthRO == clang::BuiltinType::OCLImage2dDepthRO, "");
    1086                 :            : static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeOCLImage2dArrayDepthRO == clang::BuiltinType::OCLImage2dArrayDepthRO, "");
    1087                 :            : static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeOCLImage2dMSAARO == clang::BuiltinType::OCLImage2dMSAARO, "");
    1088                 :            : static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeOCLImage2dArrayMSAARO == clang::BuiltinType::OCLImage2dArrayMSAARO, "");
    1089                 :            : static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeOCLImage2dMSAADepthRO == clang::BuiltinType::OCLImage2dMSAADepthRO, "");
    1090                 :            : static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeOCLImage2dArrayMSAADepthRO == clang::BuiltinType::OCLImage2dArrayMSAADepthRO, "");
    1091                 :            : static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeOCLImage3dRO == clang::BuiltinType::OCLImage3dRO, "");
    1092                 :            : static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeOCLImage1dWO == clang::BuiltinType::OCLImage1dWO, "");
    1093                 :            : static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeOCLImage1dArrayWO == clang::BuiltinType::OCLImage1dArrayWO, "");
    1094                 :            : static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeOCLImage1dBufferWO == clang::BuiltinType::OCLImage1dBufferWO, "");
    1095                 :            : static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeOCLImage2dWO == clang::BuiltinType::OCLImage2dWO, "");
    1096                 :            : static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeOCLImage2dArrayWO == clang::BuiltinType::OCLImage2dArrayWO, "");
    1097                 :            : static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeOCLImage2dDepthWO == clang::BuiltinType::OCLImage2dDepthWO, "");
    1098                 :            : static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeOCLImage2dArrayDepthWO == clang::BuiltinType::OCLImage2dArrayDepthWO, "");
    1099                 :            : static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeOCLImage2dMSAAWO == clang::BuiltinType::OCLImage2dMSAAWO, "");
    1100                 :            : static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeOCLImage2dArrayMSAAWO == clang::BuiltinType::OCLImage2dArrayMSAAWO, "");
    1101                 :            : static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeOCLImage2dMSAADepthWO == clang::BuiltinType::OCLImage2dMSAADepthWO, "");
    1102                 :            : static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeOCLImage2dArrayMSAADepthWO == clang::BuiltinType::OCLImage2dArrayMSAADepthWO, "");
    1103                 :            : static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeOCLImage3dWO == clang::BuiltinType::OCLImage3dWO, "");
    1104                 :            : static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeOCLImage1dRW == clang::BuiltinType::OCLImage1dRW, "");
    1105                 :            : static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeOCLImage1dArrayRW == clang::BuiltinType::OCLImage1dArrayRW, "");
    1106                 :            : static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeOCLImage1dBufferRW == clang::BuiltinType::OCLImage1dBufferRW, "");
    1107                 :            : static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeOCLImage2dRW == clang::BuiltinType::OCLImage2dRW, "");
    1108                 :            : static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeOCLImage2dArrayRW == clang::BuiltinType::OCLImage2dArrayRW, "");
    1109                 :            : static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeOCLImage2dDepthRW == clang::BuiltinType::OCLImage2dDepthRW, "");
    1110                 :            : static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeOCLImage2dArrayDepthRW == clang::BuiltinType::OCLImage2dArrayDepthRW, "");
    1111                 :            : static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeOCLImage2dMSAARW == clang::BuiltinType::OCLImage2dMSAARW, "");
    1112                 :            : static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeOCLImage2dArrayMSAARW == clang::BuiltinType::OCLImage2dArrayMSAARW, "");
    1113                 :            : static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeOCLImage2dMSAADepthRW == clang::BuiltinType::OCLImage2dMSAADepthRW, "");
    1114                 :            : static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeOCLImage2dArrayMSAADepthRW == clang::BuiltinType::OCLImage2dArrayMSAADepthRW, "");
    1115                 :            : static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeOCLImage3dRW == clang::BuiltinType::OCLImage3dRW, "");
    1116                 :            : static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeOCLIntelSubgroupAVCMcePayload == clang::BuiltinType::OCLIntelSubgroupAVCMcePayload, "");
    1117                 :            : static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeOCLIntelSubgroupAVCImePayload == clang::BuiltinType::OCLIntelSubgroupAVCImePayload, "");
    1118                 :            : static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeOCLIntelSubgroupAVCRefPayload == clang::BuiltinType::OCLIntelSubgroupAVCRefPayload, "");
    1119                 :            : static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeOCLIntelSubgroupAVCSicPayload == clang::BuiltinType::OCLIntelSubgroupAVCSicPayload, "");
    1120                 :            : static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeOCLIntelSubgroupAVCMceResult == clang::BuiltinType::OCLIntelSubgroupAVCMceResult, "");
    1121                 :            : static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeOCLIntelSubgroupAVCImeResult == clang::BuiltinType::OCLIntelSubgroupAVCImeResult, "");
    1122                 :            : static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeOCLIntelSubgroupAVCRefResult == clang::BuiltinType::OCLIntelSubgroupAVCRefResult, "");
    1123                 :            : static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeOCLIntelSubgroupAVCSicResult == clang::BuiltinType::OCLIntelSubgroupAVCSicResult, "");
    1124                 :            : static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeOCLIntelSubgroupAVCImeResultSingleRefStreamout == clang::BuiltinType::OCLIntelSubgroupAVCImeResultSingleRefStreamout, "");
    1125                 :            : static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeOCLIntelSubgroupAVCImeResultDualRefStreamout == clang::BuiltinType::OCLIntelSubgroupAVCImeResultDualRefStreamout, "");
    1126                 :            : static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeOCLIntelSubgroupAVCImeSingleRefStreamin == clang::BuiltinType::OCLIntelSubgroupAVCImeSingleRefStreamin, "");
    1127                 :            : static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeOCLIntelSubgroupAVCImeDualRefStreamin == clang::BuiltinType::OCLIntelSubgroupAVCImeDualRefStreamin, "");
    1128                 :            : static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeVoid == clang::BuiltinType::Void, "");
    1129                 :            : static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeBool == clang::BuiltinType::Bool, "");
    1130                 :            : static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeChar_U == clang::BuiltinType::Char_U, "");
    1131                 :            : static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeUChar == clang::BuiltinType::UChar, "");
    1132                 :            : static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeWChar_U == clang::BuiltinType::WChar_U, "");
    1133                 :            : static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeChar8 == clang::BuiltinType::Char8, "");
    1134                 :            : static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeChar16 == clang::BuiltinType::Char16, "");
    1135                 :            : static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeChar32 == clang::BuiltinType::Char32, "");
    1136                 :            : static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeUShort == clang::BuiltinType::UShort, "");
    1137                 :            : static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeUInt == clang::BuiltinType::UInt, "");
    1138                 :            : static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeULong == clang::BuiltinType::ULong, "");
    1139                 :            : static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeULongLong == clang::BuiltinType::ULongLong, "");
    1140                 :            : static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeUInt128 == clang::BuiltinType::UInt128, "");
    1141                 :            : static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeChar_S == clang::BuiltinType::Char_S, "");
    1142                 :            : static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeSChar == clang::BuiltinType::SChar, "");
    1143                 :            : static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeWChar_S == clang::BuiltinType::WChar_S, "");
    1144                 :            : static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeShort == clang::BuiltinType::Short, "");
    1145                 :            : static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeInt == clang::BuiltinType::Int, "");
    1146                 :            : static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeLong == clang::BuiltinType::Long, "");
    1147                 :            : static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeLongLong == clang::BuiltinType::LongLong, "");
    1148                 :            : static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeInt128 == clang::BuiltinType::Int128, "");
    1149                 :            : static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeShortAccum == clang::BuiltinType::ShortAccum, "");
    1150                 :            : static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeAccum == clang::BuiltinType::Accum, "");
    1151                 :            : static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeLongAccum == clang::BuiltinType::LongAccum, "");
    1152                 :            : static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeUShortAccum == clang::BuiltinType::UShortAccum, "");
    1153                 :            : static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeUAccum == clang::BuiltinType::UAccum, "");
    1154                 :            : static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeULongAccum == clang::BuiltinType::ULongAccum, "");
    1155                 :            : static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeShortFract == clang::BuiltinType::ShortFract, "");
    1156                 :            : static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeFract == clang::BuiltinType::Fract, "");
    1157                 :            : static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeLongFract == clang::BuiltinType::LongFract, "");
    1158                 :            : static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeUShortFract == clang::BuiltinType::UShortFract, "");
    1159                 :            : static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeUFract == clang::BuiltinType::UFract, "");
    1160                 :            : static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeULongFract == clang::BuiltinType::ULongFract, "");
    1161                 :            : static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeSatShortAccum == clang::BuiltinType::SatShortAccum, "");
    1162                 :            : static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeSatAccum == clang::BuiltinType::SatAccum, "");
    1163                 :            : static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeSatLongAccum == clang::BuiltinType::SatLongAccum, "");
    1164                 :            : static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeSatUShortAccum == clang::BuiltinType::SatUShortAccum, "");
    1165                 :            : static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeSatUAccum == clang::BuiltinType::SatUAccum, "");
    1166                 :            : static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeSatULongAccum == clang::BuiltinType::SatULongAccum, "");
    1167                 :            : static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeSatShortFract == clang::BuiltinType::SatShortFract, "");
    1168                 :            : static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeSatFract == clang::BuiltinType::SatFract, "");
    1169                 :            : static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeSatLongFract == clang::BuiltinType::SatLongFract, "");
    1170                 :            : static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeSatUShortFract == clang::BuiltinType::SatUShortFract, "");
    1171                 :            : static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeSatUFract == clang::BuiltinType::SatUFract, "");
    1172                 :            : static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeSatULongFract == clang::BuiltinType::SatULongFract, "");
    1173                 :            : static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeHalf == clang::BuiltinType::Half, "");
    1174                 :            : static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeFloat == clang::BuiltinType::Float, "");
    1175                 :            : static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeDouble == clang::BuiltinType::Double, "");
    1176                 :            : static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeLongDouble == clang::BuiltinType::LongDouble, "");
    1177                 :            : static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeFloat16 == clang::BuiltinType::Float16, "");
    1178                 :            : static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeFloat128 == clang::BuiltinType::Float128, "");
    1179                 :            : static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeNullPtr == clang::BuiltinType::NullPtr, "");
    1180                 :            : static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeObjCId == clang::BuiltinType::ObjCId, "");
    1181                 :            : static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeObjCClass == clang::BuiltinType::ObjCClass, "");
    1182                 :            : static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeObjCSel == clang::BuiltinType::ObjCSel, "");
    1183                 :            : static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeOCLSampler == clang::BuiltinType::OCLSampler, "");
    1184                 :            : static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeOCLEvent == clang::BuiltinType::OCLEvent, "");
    1185                 :            : static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeOCLClkEvent == clang::BuiltinType::OCLClkEvent, "");
    1186                 :            : static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeOCLQueue == clang::BuiltinType::OCLQueue, "");
    1187                 :            : static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeOCLReserveID == clang::BuiltinType::OCLReserveID, "");
    1188                 :            : static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeDependent == clang::BuiltinType::Dependent, "");
    1189                 :            : static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeOverload == clang::BuiltinType::Overload, "");
    1190                 :            : static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeBoundMember == clang::BuiltinType::BoundMember, "");
    1191                 :            : static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypePseudoObject == clang::BuiltinType::PseudoObject, "");
    1192                 :            : static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeUnknownAny == clang::BuiltinType::UnknownAny, "");
    1193                 :            : static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeBuiltinFn == clang::BuiltinType::BuiltinFn, "");
    1194                 :            : static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeARCUnbridgedCast == clang::BuiltinType::ARCUnbridgedCast, "");
    1195                 :            : static_assert((clang::BuiltinType::Kind)ZigClangBuiltinTypeOMPArraySection == clang::BuiltinType::OMPArraySection, "");
    1196                 :            : 
    1197                 :          0 : void ZigClang_detect_enum_CallingConv(clang::CallingConv x) {
    1198         [ #  # ]:          0 :     switch (x) {
    1199                 :          0 :         case clang::CC_C:
    1200                 :            :         case clang::CC_X86StdCall:
    1201                 :            :         case clang::CC_X86FastCall:
    1202                 :            :         case clang::CC_X86ThisCall:
    1203                 :            :         case clang::CC_X86VectorCall:
    1204                 :            :         case clang::CC_X86Pascal:
    1205                 :            :         case clang::CC_Win64:
    1206                 :            :         case clang::CC_X86_64SysV:
    1207                 :            :         case clang::CC_X86RegCall:
    1208                 :            :         case clang::CC_AAPCS:
    1209                 :            :         case clang::CC_AAPCS_VFP:
    1210                 :            :         case clang::CC_IntelOclBicc:
    1211                 :            :         case clang::CC_SpirFunction:
    1212                 :            :         case clang::CC_OpenCLKernel:
    1213                 :            :         case clang::CC_Swift:
    1214                 :            :         case clang::CC_PreserveMost:
    1215                 :            :         case clang::CC_PreserveAll:
    1216                 :            :         case clang::CC_AArch64VectorCall:
    1217                 :          0 :             break;
    1218                 :            :     }
    1219                 :          0 : }
    1220                 :            : 
    1221                 :            : static_assert((clang::CallingConv)ZigClangCallingConv_C == clang::CC_C, "");
    1222                 :            : static_assert((clang::CallingConv)ZigClangCallingConv_X86StdCall == clang::CC_X86StdCall, "");
    1223                 :            : static_assert((clang::CallingConv)ZigClangCallingConv_X86FastCall == clang::CC_X86FastCall, "");
    1224                 :            : static_assert((clang::CallingConv)ZigClangCallingConv_X86ThisCall == clang::CC_X86ThisCall, "");
    1225                 :            : static_assert((clang::CallingConv)ZigClangCallingConv_X86VectorCall == clang::CC_X86VectorCall, "");
    1226                 :            : static_assert((clang::CallingConv)ZigClangCallingConv_X86Pascal == clang::CC_X86Pascal, "");
    1227                 :            : static_assert((clang::CallingConv)ZigClangCallingConv_Win64 == clang::CC_Win64, "");
    1228                 :            : static_assert((clang::CallingConv)ZigClangCallingConv_X86_64SysV == clang::CC_X86_64SysV, "");
    1229                 :            : static_assert((clang::CallingConv)ZigClangCallingConv_X86RegCall == clang::CC_X86RegCall, "");
    1230                 :            : static_assert((clang::CallingConv)ZigClangCallingConv_AAPCS == clang::CC_AAPCS, "");
    1231                 :            : static_assert((clang::CallingConv)ZigClangCallingConv_AAPCS_VFP == clang::CC_AAPCS_VFP, "");
    1232                 :            : static_assert((clang::CallingConv)ZigClangCallingConv_IntelOclBicc == clang::CC_IntelOclBicc, "");
    1233                 :            : static_assert((clang::CallingConv)ZigClangCallingConv_SpirFunction == clang::CC_SpirFunction, "");
    1234                 :            : static_assert((clang::CallingConv)ZigClangCallingConv_OpenCLKernel == clang::CC_OpenCLKernel, "");
    1235                 :            : static_assert((clang::CallingConv)ZigClangCallingConv_Swift == clang::CC_Swift, "");
    1236                 :            : static_assert((clang::CallingConv)ZigClangCallingConv_PreserveMost == clang::CC_PreserveMost, "");
    1237                 :            : static_assert((clang::CallingConv)ZigClangCallingConv_PreserveAll == clang::CC_PreserveAll, "");
    1238                 :            : static_assert((clang::CallingConv)ZigClangCallingConv_AArch64VectorCall == clang::CC_AArch64VectorCall, "");
    1239                 :            : 
    1240                 :          0 : void ZigClang_detect_enum_StorageClass(clang::StorageClass x) {
    1241         [ #  # ]:          0 :     switch (x) {
    1242                 :          0 :         case clang::SC_None:
    1243                 :            :         case clang::SC_Extern:
    1244                 :            :         case clang::SC_Static:
    1245                 :            :         case clang::SC_PrivateExtern:
    1246                 :            :         case clang::SC_Auto:
    1247                 :            :         case clang::SC_Register:
    1248                 :          0 :             break;
    1249                 :            :     }
    1250                 :          0 : }
    1251                 :            : 
    1252                 :            : static_assert((clang::StorageClass)ZigClangStorageClass_None == clang::SC_None, "");
    1253                 :            : static_assert((clang::StorageClass)ZigClangStorageClass_Extern == clang::SC_Extern, "");
    1254                 :            : static_assert((clang::StorageClass)ZigClangStorageClass_Static == clang::SC_Static, "");
    1255                 :            : static_assert((clang::StorageClass)ZigClangStorageClass_PrivateExtern == clang::SC_PrivateExtern, "");
    1256                 :            : static_assert((clang::StorageClass)ZigClangStorageClass_Auto == clang::SC_Auto, "");
    1257                 :            : static_assert((clang::StorageClass)ZigClangStorageClass_Register == clang::SC_Register, "");
    1258                 :            : 
    1259                 :          0 : void ZigClang_detect_enum_RoundingMode(llvm::APFloat::roundingMode x) {
    1260         [ #  # ]:          0 :     switch (x) {
    1261                 :          0 :         case llvm::APFloat::rmNearestTiesToEven:
    1262                 :            :         case llvm::APFloat::rmTowardPositive:
    1263                 :            :         case llvm::APFloat::rmTowardNegative:
    1264                 :            :         case llvm::APFloat::rmTowardZero:
    1265                 :            :         case llvm::APFloat::rmNearestTiesToAway:
    1266                 :          0 :             break;
    1267                 :            :     }
    1268                 :          0 : }
    1269                 :            : static_assert((llvm::APFloat::roundingMode)ZigClangAPFloat_roundingMode_NearestTiesToEven == llvm::APFloat::rmNearestTiesToEven, "");
    1270                 :            : static_assert((llvm::APFloat::roundingMode)ZigClangAPFloat_roundingMode_TowardPositive == llvm::APFloat::rmTowardPositive, "");
    1271                 :            : static_assert((llvm::APFloat::roundingMode)ZigClangAPFloat_roundingMode_TowardNegative == llvm::APFloat::rmTowardNegative, "");
    1272                 :            : static_assert((llvm::APFloat::roundingMode)ZigClangAPFloat_roundingMode_TowardZero == llvm::APFloat::rmTowardZero, "");
    1273                 :            : static_assert((llvm::APFloat::roundingMode)ZigClangAPFloat_roundingMode_NearestTiesToAway == llvm::APFloat::rmNearestTiesToAway, "");
    1274                 :            : 
    1275                 :          0 : void ZigClang_detect_enum_StringKind(clang::StringLiteral::StringKind x) {
    1276         [ #  # ]:          0 :     switch (x) {
    1277                 :          0 :         case clang::StringLiteral::Ascii:
    1278                 :            :         case clang::StringLiteral::Wide:
    1279                 :            :         case clang::StringLiteral::UTF8:
    1280                 :            :         case clang::StringLiteral::UTF16:
    1281                 :            :         case clang::StringLiteral::UTF32:
    1282                 :          0 :             break;
    1283                 :            :     }
    1284                 :          0 : }
    1285                 :            : static_assert((clang::StringLiteral::StringKind)ZigClangStringLiteral_StringKind_Ascii == clang::StringLiteral::Ascii, "");
    1286                 :            : static_assert((clang::StringLiteral::StringKind)ZigClangStringLiteral_StringKind_Wide == clang::StringLiteral::Wide, "");
    1287                 :            : static_assert((clang::StringLiteral::StringKind)ZigClangStringLiteral_StringKind_UTF8 == clang::StringLiteral::UTF8, "");
    1288                 :            : static_assert((clang::StringLiteral::StringKind)ZigClangStringLiteral_StringKind_UTF16 == clang::StringLiteral::UTF16, "");
    1289                 :            : static_assert((clang::StringLiteral::StringKind)ZigClangStringLiteral_StringKind_UTF32 == clang::StringLiteral::UTF32, "");
    1290                 :            : 
    1291                 :            : static_assert((clang::APValue::ValueKind)ZigClangAPValue_ValueKind_Uninitialized == clang::APValue::ValueKind::Uninitialized, "");
    1292                 :            : static_assert((clang::APValue::ValueKind)ZigClangAPValue_ValueKind_Int == clang::APValue::ValueKind::Int, "");
    1293                 :            : static_assert((clang::APValue::ValueKind)ZigClangAPValue_ValueKind_Float == clang::APValue::ValueKind::Float, "");
    1294                 :            : static_assert((clang::APValue::ValueKind)ZigClangAPValue_ValueKind_ComplexInt == clang::APValue::ValueKind::ComplexInt, "");
    1295                 :            : static_assert((clang::APValue::ValueKind)ZigClangAPValue_ValueKind_ComplexFloat == clang::APValue::ValueKind::ComplexFloat, "");
    1296                 :            : static_assert((clang::APValue::ValueKind)ZigClangAPValue_ValueKind_LValue == clang::APValue::ValueKind::LValue, "");
    1297                 :            : static_assert((clang::APValue::ValueKind)ZigClangAPValue_ValueKind_Vector == clang::APValue::ValueKind::Vector, "");
    1298                 :            : static_assert((clang::APValue::ValueKind)ZigClangAPValue_ValueKind_Array == clang::APValue::ValueKind::Array, "");
    1299                 :            : static_assert((clang::APValue::ValueKind)ZigClangAPValue_ValueKind_Struct == clang::APValue::ValueKind::Struct, "");
    1300                 :            : static_assert((clang::APValue::ValueKind)ZigClangAPValue_ValueKind_Union == clang::APValue::ValueKind::Union, "");
    1301                 :            : static_assert((clang::APValue::ValueKind)ZigClangAPValue_ValueKind_MemberPointer == clang::APValue::ValueKind::MemberPointer, "");
    1302                 :            : static_assert((clang::APValue::ValueKind)ZigClangAPValue_ValueKind_AddrLabelDiff == clang::APValue::ValueKind::AddrLabelDiff, "");
    1303                 :            : 
    1304                 :            : static_assert(sizeof(ZigClangAPValue) == sizeof(clang::APValue), "");
    1305                 :            : 
    1306                 :            : static_assert(sizeof(ZigClangSourceLocation) == sizeof(clang::SourceLocation), "");
    1307                 :          0 : static ZigClangSourceLocation bitcast(clang::SourceLocation src) {
    1308                 :            :     ZigClangSourceLocation dest;
    1309                 :          0 :     memcpy(&dest, static_cast<void *>(&src), sizeof(ZigClangSourceLocation));
    1310                 :          0 :     return dest;
    1311                 :            : }
    1312                 :          0 : static clang::SourceLocation bitcast(ZigClangSourceLocation src) {
    1313                 :          0 :     clang::SourceLocation dest;
    1314                 :          0 :     memcpy(&dest, static_cast<void *>(&src), sizeof(ZigClangSourceLocation));
    1315                 :          0 :     return dest;
    1316                 :            : }
    1317                 :            : 
    1318                 :            : static_assert(sizeof(ZigClangQualType) == sizeof(clang::QualType), "");
    1319                 :          0 : static ZigClangQualType bitcast(clang::QualType src) {
    1320                 :            :     ZigClangQualType dest;
    1321                 :          0 :     memcpy(&dest, static_cast<void *>(&src), sizeof(ZigClangQualType));
    1322                 :          0 :     return dest;
    1323                 :            : }
    1324                 :          0 : static clang::QualType bitcast(ZigClangQualType src) {
    1325                 :          0 :     clang::QualType dest;
    1326                 :          0 :     memcpy(&dest, static_cast<void *>(&src), sizeof(ZigClangQualType));
    1327                 :          0 :     return dest;
    1328                 :            : }
    1329                 :            : 
    1330                 :            : static_assert(sizeof(ZigClangExprEvalResult) == sizeof(clang::Expr::EvalResult), "");
    1331                 :          0 : static ZigClangExprEvalResult bitcast(clang::Expr::EvalResult src) {
    1332                 :            :     ZigClangExprEvalResult dest;
    1333                 :          0 :     memcpy(&dest, static_cast<void *>(&src), sizeof(ZigClangExprEvalResult));
    1334                 :          0 :     return dest;
    1335                 :            : }
    1336                 :            : 
    1337                 :            : static_assert(sizeof(ZigClangAPValueLValueBase) == sizeof(clang::APValue::LValueBase), "");
    1338                 :          0 : static ZigClangAPValueLValueBase bitcast(clang::APValue::LValueBase src) {
    1339                 :            :     ZigClangAPValueLValueBase dest;
    1340                 :          0 :     memcpy(&dest, static_cast<void *>(&src), sizeof(ZigClangAPValueLValueBase));
    1341                 :          0 :     return dest;
    1342                 :            : }
    1343                 :          0 : static clang::APValue::LValueBase bitcast(ZigClangAPValueLValueBase src) {
    1344                 :          0 :     clang::APValue::LValueBase dest;
    1345                 :          0 :     memcpy(&dest, static_cast<void *>(&src), sizeof(ZigClangAPValueLValueBase));
    1346                 :          0 :     return dest;
    1347                 :            : }
    1348                 :            : 
    1349                 :            : static_assert(sizeof(ZigClangCompoundStmt_const_body_iterator) == sizeof(clang::CompoundStmt::const_body_iterator), "");
    1350                 :          0 : static ZigClangCompoundStmt_const_body_iterator bitcast(clang::CompoundStmt::const_body_iterator src) {
    1351                 :            :     ZigClangCompoundStmt_const_body_iterator dest;
    1352                 :          0 :     memcpy(&dest, static_cast<void *>(&src), sizeof(ZigClangCompoundStmt_const_body_iterator));
    1353                 :          0 :     return dest;
    1354                 :            : }
    1355                 :            : 
    1356                 :            : static_assert(sizeof(ZigClangDeclStmt_const_decl_iterator) == sizeof(clang::DeclStmt::const_decl_iterator), "");
    1357                 :          0 : static ZigClangDeclStmt_const_decl_iterator bitcast(clang::DeclStmt::const_decl_iterator src) {
    1358                 :            :     ZigClangDeclStmt_const_decl_iterator dest;
    1359                 :          0 :     memcpy(&dest, static_cast<void *>(&src), sizeof(ZigClangDeclStmt_const_decl_iterator));
    1360                 :          0 :     return dest;
    1361                 :            : }
    1362                 :            : 
    1363                 :          0 : ZigClangSourceLocation ZigClangSourceManager_getSpellingLoc(const ZigClangSourceManager *self,
    1364                 :            :         ZigClangSourceLocation Loc)
    1365                 :            : {
    1366                 :          0 :     return bitcast(reinterpret_cast<const clang::SourceManager *>(self)->getSpellingLoc(bitcast(Loc)));
    1367                 :            : }
    1368                 :            : 
    1369                 :          0 : const char *ZigClangSourceManager_getFilename(const ZigClangSourceManager *self,
    1370                 :            :         ZigClangSourceLocation SpellingLoc)
    1371                 :            : {
    1372                 :          0 :     llvm::StringRef s = reinterpret_cast<const clang::SourceManager *>(self)->getFilename(bitcast(SpellingLoc));
    1373                 :          0 :     return (const char *)s.bytes_begin();
    1374                 :            : }
    1375                 :            : 
    1376                 :          0 : unsigned ZigClangSourceManager_getSpellingLineNumber(const ZigClangSourceManager *self,
    1377                 :            :         ZigClangSourceLocation Loc)
    1378                 :            : {
    1379                 :          0 :     return reinterpret_cast<const clang::SourceManager *>(self)->getSpellingLineNumber(bitcast(Loc));
    1380                 :            : }
    1381                 :            : 
    1382                 :          0 : unsigned ZigClangSourceManager_getSpellingColumnNumber(const ZigClangSourceManager *self,
    1383                 :            :         ZigClangSourceLocation Loc)
    1384                 :            : {
    1385                 :          0 :     return reinterpret_cast<const clang::SourceManager *>(self)->getSpellingColumnNumber(bitcast(Loc));
    1386                 :            : }
    1387                 :            : 
    1388                 :          0 : const char* ZigClangSourceManager_getCharacterData(const ZigClangSourceManager *self,
    1389                 :            :         ZigClangSourceLocation SL)
    1390                 :            : {
    1391                 :          0 :     return reinterpret_cast<const clang::SourceManager *>(self)->getCharacterData(bitcast(SL));
    1392                 :            : }
    1393                 :            : 
    1394                 :          0 : ZigClangQualType ZigClangASTContext_getPointerType(const ZigClangASTContext* self, ZigClangQualType T) {
    1395                 :          0 :     return bitcast(reinterpret_cast<const clang::ASTContext *>(self)->getPointerType(bitcast(T)));
    1396                 :            : }
    1397                 :            : 
    1398                 :          0 : unsigned ZigClangASTContext_getTypeAlign(const ZigClangASTContext* self, ZigClangQualType T) {
    1399                 :          0 :     return reinterpret_cast<const clang::ASTContext *>(self)->getTypeAlign(bitcast(T));
    1400                 :            : }
    1401                 :            : 
    1402                 :          0 : ZigClangASTContext *ZigClangASTUnit_getASTContext(ZigClangASTUnit *self) {
    1403                 :          0 :     clang::ASTContext *result = &reinterpret_cast<clang::ASTUnit *>(self)->getASTContext();
    1404                 :          0 :     return reinterpret_cast<ZigClangASTContext *>(result);
    1405                 :            : }
    1406                 :            : 
    1407                 :          0 : ZigClangSourceManager *ZigClangASTUnit_getSourceManager(ZigClangASTUnit *self) {
    1408                 :          0 :     clang::SourceManager *result = &reinterpret_cast<clang::ASTUnit *>(self)->getSourceManager();
    1409                 :          0 :     return reinterpret_cast<ZigClangSourceManager *>(result);
    1410                 :            : }
    1411                 :            : 
    1412                 :          0 : bool ZigClangASTUnit_visitLocalTopLevelDecls(ZigClangASTUnit *self, void *context,
    1413                 :            :     bool (*Fn)(void *context, const ZigClangDecl *decl))
    1414                 :            : {
    1415                 :            :     return reinterpret_cast<clang::ASTUnit *>(self)->visitLocalTopLevelDecls(context,
    1416                 :          0 :             reinterpret_cast<bool (*)(void *, const clang::Decl *)>(Fn));
    1417                 :            : }
    1418                 :            : 
    1419                 :          0 : const ZigClangRecordDecl *ZigClangRecordType_getDecl(const ZigClangRecordType *record_ty) {
    1420                 :          0 :     const clang::RecordDecl *record_decl = reinterpret_cast<const clang::RecordType *>(record_ty)->getDecl();
    1421                 :          0 :     return reinterpret_cast<const ZigClangRecordDecl *>(record_decl);
    1422                 :            : }
    1423                 :            : 
    1424                 :          0 : const ZigClangEnumDecl *ZigClangEnumType_getDecl(const ZigClangEnumType *enum_ty) {
    1425                 :          0 :     const clang::EnumDecl *enum_decl = reinterpret_cast<const clang::EnumType *>(enum_ty)->getDecl();
    1426                 :          0 :     return reinterpret_cast<const ZigClangEnumDecl *>(enum_decl);
    1427                 :            : }
    1428                 :            : 
    1429                 :          0 : const ZigClangTagDecl *ZigClangRecordDecl_getCanonicalDecl(const ZigClangRecordDecl *record_decl) {
    1430                 :          0 :     const clang::TagDecl *tag_decl = reinterpret_cast<const clang::RecordDecl*>(record_decl)->getCanonicalDecl();
    1431                 :          0 :     return reinterpret_cast<const ZigClangTagDecl *>(tag_decl);
    1432                 :            : }
    1433                 :            : 
    1434                 :          0 : const ZigClangTagDecl *ZigClangEnumDecl_getCanonicalDecl(const ZigClangEnumDecl *enum_decl) {
    1435                 :          0 :     const clang::TagDecl *tag_decl = reinterpret_cast<const clang::EnumDecl*>(enum_decl)->getCanonicalDecl();
    1436                 :          0 :     return reinterpret_cast<const ZigClangTagDecl *>(tag_decl);
    1437                 :            : }
    1438                 :            : 
    1439                 :          0 : const ZigClangTypedefNameDecl *ZigClangTypedefNameDecl_getCanonicalDecl(const ZigClangTypedefNameDecl *self) {
    1440                 :          0 :     const clang::TypedefNameDecl *decl = reinterpret_cast<const clang::TypedefNameDecl*>(self)->getCanonicalDecl();
    1441                 :          0 :     return reinterpret_cast<const ZigClangTypedefNameDecl *>(decl);
    1442                 :            : }
    1443                 :            : 
    1444                 :          0 : const ZigClangRecordDecl *ZigClangRecordDecl_getDefinition(const ZigClangRecordDecl *zig_record_decl) {
    1445                 :          0 :     const clang::RecordDecl *record_decl = reinterpret_cast<const clang::RecordDecl *>(zig_record_decl);
    1446                 :          0 :     const clang::RecordDecl *definition = record_decl->getDefinition();
    1447                 :          0 :     return reinterpret_cast<const ZigClangRecordDecl *>(definition);
    1448                 :            : }
    1449                 :            : 
    1450                 :          0 : const ZigClangEnumDecl *ZigClangEnumDecl_getDefinition(const ZigClangEnumDecl *zig_enum_decl) {
    1451                 :          0 :     const clang::EnumDecl *enum_decl = reinterpret_cast<const clang::EnumDecl *>(zig_enum_decl);
    1452                 :          0 :     const clang::EnumDecl *definition = enum_decl->getDefinition();
    1453                 :          0 :     return reinterpret_cast<const ZigClangEnumDecl *>(definition);
    1454                 :            : }
    1455                 :            : 
    1456                 :          0 : bool ZigClangRecordDecl_isUnion(const ZigClangRecordDecl *record_decl) {
    1457                 :          0 :     return reinterpret_cast<const clang::RecordDecl*>(record_decl)->isUnion();
    1458                 :            : }
    1459                 :            : 
    1460                 :          0 : bool ZigClangRecordDecl_isStruct(const ZigClangRecordDecl *record_decl) {
    1461                 :          0 :     return reinterpret_cast<const clang::RecordDecl*>(record_decl)->isStruct();
    1462                 :            : }
    1463                 :            : 
    1464                 :          0 : bool ZigClangRecordDecl_isAnonymousStructOrUnion(const ZigClangRecordDecl *record_decl) {
    1465                 :          0 :     return reinterpret_cast<const clang::RecordDecl*>(record_decl)->isAnonymousStructOrUnion();
    1466                 :            : }
    1467                 :            : 
    1468                 :          0 : const char *ZigClangDecl_getName_bytes_begin(const ZigClangDecl *zig_decl) {
    1469                 :          0 :     const clang::Decl *decl = reinterpret_cast<const clang::Decl *>(zig_decl);
    1470                 :          0 :     const clang::NamedDecl *named_decl = static_cast<const clang::NamedDecl *>(decl);
    1471                 :          0 :     return (const char *)named_decl->getName().bytes_begin();
    1472                 :            : }
    1473                 :            : 
    1474                 :          0 : ZigClangDeclKind ZigClangDecl_getKind(const struct ZigClangDecl *self) {
    1475                 :          0 :     auto casted = reinterpret_cast<const clang::Decl *>(self);
    1476                 :          0 :     return (ZigClangDeclKind)casted->getKind();
    1477                 :            : }
    1478                 :            : 
    1479                 :          0 : const char *ZigClangDecl_getDeclKindName(const struct ZigClangDecl *self) {
    1480                 :          0 :     auto casted = reinterpret_cast<const clang::Decl *>(self);
    1481                 :          0 :     return casted->getDeclKindName();
    1482                 :            : }
    1483                 :            : 
    1484                 :          0 : ZigClangSourceLocation ZigClangRecordDecl_getLocation(const ZigClangRecordDecl *zig_record_decl) {
    1485                 :          0 :     const clang::RecordDecl *record_decl = reinterpret_cast<const clang::RecordDecl *>(zig_record_decl);
    1486                 :          0 :     return bitcast(record_decl->getLocation());
    1487                 :            : }
    1488                 :            : 
    1489                 :          0 : ZigClangSourceLocation ZigClangEnumDecl_getLocation(const ZigClangEnumDecl *self) {
    1490                 :          0 :     auto casted = reinterpret_cast<const clang::EnumDecl *>(self);
    1491                 :          0 :     return bitcast(casted->getLocation());
    1492                 :            : }
    1493                 :            : 
    1494                 :          0 : ZigClangSourceLocation ZigClangTypedefNameDecl_getLocation(const ZigClangTypedefNameDecl *self) {
    1495                 :          0 :     auto casted = reinterpret_cast<const clang::TypedefNameDecl *>(self);
    1496                 :          0 :     return bitcast(casted->getLocation());
    1497                 :            : }
    1498                 :            : 
    1499                 :          0 : ZigClangSourceLocation ZigClangDecl_getLocation(const ZigClangDecl *self) {
    1500                 :          0 :     auto casted = reinterpret_cast<const clang::Decl *>(self);
    1501                 :          0 :     return bitcast(casted->getLocation());
    1502                 :            : }
    1503                 :            : 
    1504                 :          0 : bool ZigClangSourceLocation_eq(ZigClangSourceLocation zig_a, ZigClangSourceLocation zig_b) {
    1505                 :          0 :     clang::SourceLocation a = bitcast(zig_a);
    1506                 :          0 :     clang::SourceLocation b = bitcast(zig_b);
    1507                 :          0 :     return a == b;
    1508                 :            : }
    1509                 :            : 
    1510                 :          0 : ZigClangQualType ZigClangEnumDecl_getIntegerType(const ZigClangEnumDecl *self) {
    1511                 :          0 :     return bitcast(reinterpret_cast<const clang::EnumDecl *>(self)->getIntegerType());
    1512                 :            : }
    1513                 :            : 
    1514                 :          0 : struct ZigClangQualType ZigClangFunctionDecl_getType(const struct ZigClangFunctionDecl *self) {
    1515                 :          0 :     auto casted = reinterpret_cast<const clang::FunctionDecl *>(self);
    1516                 :          0 :     return bitcast(casted->getType());
    1517                 :            : }
    1518                 :            : 
    1519                 :          0 : struct ZigClangSourceLocation ZigClangFunctionDecl_getLocation(const struct ZigClangFunctionDecl *self) {
    1520                 :          0 :     auto casted = reinterpret_cast<const clang::FunctionDecl *>(self);
    1521                 :          0 :     return bitcast(casted->getLocation());
    1522                 :            : }
    1523                 :            : 
    1524                 :          0 : bool ZigClangFunctionDecl_hasBody(const struct ZigClangFunctionDecl *self) {
    1525                 :          0 :     auto casted = reinterpret_cast<const clang::FunctionDecl *>(self);
    1526                 :          0 :     return casted->hasBody();
    1527                 :            : }
    1528                 :            : 
    1529                 :          0 : enum ZigClangStorageClass ZigClangFunctionDecl_getStorageClass(const struct ZigClangFunctionDecl *self) {
    1530                 :          0 :     auto casted = reinterpret_cast<const clang::FunctionDecl *>(self);
    1531                 :          0 :     return (ZigClangStorageClass)casted->getStorageClass();
    1532                 :            : }
    1533                 :            : 
    1534                 :          0 : const struct ZigClangParmVarDecl *ZigClangFunctionDecl_getParamDecl(const struct ZigClangFunctionDecl *self,
    1535                 :            :         unsigned i)
    1536                 :            : {
    1537                 :          0 :     auto casted = reinterpret_cast<const clang::FunctionDecl *>(self);
    1538                 :          0 :     const clang::ParmVarDecl *parm_var_decl = casted->getParamDecl(i);
    1539                 :          0 :     return reinterpret_cast<const ZigClangParmVarDecl *>(parm_var_decl);
    1540                 :            : }
    1541                 :            : 
    1542                 :          0 : const struct ZigClangStmt *ZigClangFunctionDecl_getBody(const struct ZigClangFunctionDecl *self) {
    1543                 :          0 :     auto casted = reinterpret_cast<const clang::FunctionDecl *>(self);
    1544                 :          0 :     const clang::Stmt *stmt = casted->getBody();
    1545                 :          0 :     return reinterpret_cast<const ZigClangStmt *>(stmt);
    1546                 :            : }
    1547                 :            : 
    1548                 :          0 : const ZigClangTypedefNameDecl *ZigClangTypedefType_getDecl(const ZigClangTypedefType *self) {
    1549                 :          0 :     auto casted = reinterpret_cast<const clang::TypedefType *>(self);
    1550                 :          0 :     const clang::TypedefNameDecl *name_decl = casted->getDecl();
    1551                 :          0 :     return reinterpret_cast<const ZigClangTypedefNameDecl *>(name_decl);
    1552                 :            : }
    1553                 :            : 
    1554                 :          0 : ZigClangQualType ZigClangTypedefNameDecl_getUnderlyingType(const ZigClangTypedefNameDecl *self) {
    1555                 :          0 :     auto casted = reinterpret_cast<const clang::TypedefNameDecl *>(self);
    1556                 :          0 :     clang::QualType ty = casted->getUnderlyingType();
    1557                 :          0 :     return bitcast(ty);
    1558                 :            : }
    1559                 :            : 
    1560                 :          0 : ZigClangQualType ZigClangQualType_getCanonicalType(ZigClangQualType self) {
    1561                 :          0 :     clang::QualType qt = bitcast(self);
    1562                 :          0 :     return bitcast(qt.getCanonicalType());
    1563                 :            : }
    1564                 :            : 
    1565                 :          0 : const ZigClangType *ZigClangQualType_getTypePtr(ZigClangQualType self) {
    1566                 :          0 :     clang::QualType qt = bitcast(self);
    1567                 :          0 :     const clang::Type *ty = qt.getTypePtr();
    1568                 :          0 :     return reinterpret_cast<const ZigClangType *>(ty);
    1569                 :            : }
    1570                 :            : 
    1571                 :          0 : ZigClangTypeClass ZigClangQualType_getTypeClass(ZigClangQualType self) {
    1572                 :          0 :     clang::QualType ty = bitcast(self);
    1573                 :          0 :     return (ZigClangTypeClass)(ty->getTypeClass());
    1574                 :            : }
    1575                 :            : 
    1576                 :          0 : void ZigClangQualType_addConst(ZigClangQualType *self) {
    1577                 :          0 :     reinterpret_cast<clang::QualType *>(self)->addConst();
    1578                 :          0 : }
    1579                 :            : 
    1580                 :          0 : bool ZigClangQualType_eq(ZigClangQualType zig_t1, ZigClangQualType zig_t2) {
    1581                 :          0 :     clang::QualType t1 = bitcast(zig_t1);
    1582                 :          0 :     clang::QualType t2 = bitcast(zig_t2);
    1583         [ #  # ]:          0 :     if (t1.isConstQualified() != t2.isConstQualified()) {
    1584                 :          0 :         return false;
    1585                 :            :     }
    1586         [ #  # ]:          0 :     if (t1.isVolatileQualified() != t2.isVolatileQualified()) {
    1587                 :          0 :         return false;
    1588                 :            :     }
    1589         [ #  # ]:          0 :     if (t1.isRestrictQualified() != t2.isRestrictQualified()) {
    1590                 :          0 :         return false;
    1591                 :            :     }
    1592                 :          0 :     return t1.getTypePtr() == t2.getTypePtr();
    1593                 :            : }
    1594                 :            : 
    1595                 :          0 : bool ZigClangQualType_isConstQualified(ZigClangQualType self) {
    1596                 :          0 :     clang::QualType qt = bitcast(self);
    1597                 :          0 :     return qt.isConstQualified();
    1598                 :            : }
    1599                 :            : 
    1600                 :          0 : bool ZigClangQualType_isVolatileQualified(ZigClangQualType self) {
    1601                 :          0 :     clang::QualType qt = bitcast(self);
    1602                 :          0 :     return qt.isVolatileQualified();
    1603                 :            : }
    1604                 :            : 
    1605                 :          0 : bool ZigClangQualType_isRestrictQualified(ZigClangQualType self) {
    1606                 :          0 :     clang::QualType qt = bitcast(self);
    1607                 :          0 :     return qt.isRestrictQualified();
    1608                 :            : }
    1609                 :            : 
    1610                 :          0 : ZigClangTypeClass ZigClangType_getTypeClass(const ZigClangType *self) {
    1611                 :          0 :     auto casted = reinterpret_cast<const clang::Type *>(self);
    1612                 :          0 :     clang::Type::TypeClass tc = casted->getTypeClass();
    1613                 :          0 :     return (ZigClangTypeClass)tc;
    1614                 :            : }
    1615                 :            : 
    1616                 :          0 : ZigClangQualType ZigClangType_getPointeeType(const ZigClangType *self) {
    1617                 :          0 :     auto casted = reinterpret_cast<const clang::Type *>(self);
    1618                 :          0 :     return bitcast(casted->getPointeeType());
    1619                 :            : }
    1620                 :            : 
    1621                 :          0 : bool ZigClangType_isVoidType(const ZigClangType *self) {
    1622                 :          0 :     auto casted = reinterpret_cast<const clang::Type *>(self);
    1623                 :          0 :     return casted->isVoidType();
    1624                 :            : }
    1625                 :            : 
    1626                 :          0 : const char *ZigClangType_getTypeClassName(const ZigClangType *self) {
    1627                 :          0 :     auto casted = reinterpret_cast<const clang::Type *>(self);
    1628                 :          0 :     return casted->getTypeClassName();
    1629                 :            : }
    1630                 :            : 
    1631                 :          0 : ZigClangSourceLocation ZigClangStmt_getBeginLoc(const ZigClangStmt *self) {
    1632                 :          0 :     auto casted = reinterpret_cast<const clang::Stmt *>(self);
    1633                 :          0 :     return bitcast(casted->getBeginLoc());
    1634                 :            : }
    1635                 :            : 
    1636                 :          0 : bool ZigClangStmt_classof_Expr(const ZigClangStmt *self) {
    1637                 :          0 :     auto casted = reinterpret_cast<const clang::Stmt *>(self);
    1638                 :          0 :     return clang::Expr::classof(casted);
    1639                 :            : }
    1640                 :            : 
    1641                 :          0 : ZigClangStmtClass ZigClangStmt_getStmtClass(const ZigClangStmt *self) {
    1642                 :          0 :     auto casted = reinterpret_cast<const clang::Stmt *>(self);
    1643                 :          0 :     return (ZigClangStmtClass)casted->getStmtClass();
    1644                 :            : }
    1645                 :            : 
    1646                 :          0 : ZigClangStmtClass ZigClangExpr_getStmtClass(const ZigClangExpr *self) {
    1647                 :          0 :     auto casted = reinterpret_cast<const clang::Expr *>(self);
    1648                 :          0 :     return (ZigClangStmtClass)casted->getStmtClass();
    1649                 :            : }
    1650                 :            : 
    1651                 :          0 : ZigClangQualType ZigClangExpr_getType(const ZigClangExpr *self) {
    1652                 :          0 :     auto casted = reinterpret_cast<const clang::Expr *>(self);
    1653                 :          0 :     return bitcast(casted->getType());
    1654                 :            : }
    1655                 :            : 
    1656                 :          0 : ZigClangSourceLocation ZigClangExpr_getBeginLoc(const ZigClangExpr *self) {
    1657                 :          0 :     auto casted = reinterpret_cast<const clang::Expr *>(self);
    1658                 :          0 :     return bitcast(casted->getBeginLoc());
    1659                 :            : }
    1660                 :            : 
    1661                 :          0 : ZigClangAPValueKind ZigClangAPValue_getKind(const ZigClangAPValue *self) {
    1662                 :          0 :     auto casted = reinterpret_cast<const clang::APValue *>(self);
    1663                 :          0 :     return (ZigClangAPValueKind)casted->getKind();
    1664                 :            : }
    1665                 :            : 
    1666                 :          0 : const ZigClangAPSInt *ZigClangAPValue_getInt(const ZigClangAPValue *self) {
    1667                 :          0 :     auto casted = reinterpret_cast<const clang::APValue *>(self);
    1668                 :          0 :     const llvm::APSInt *result = &casted->getInt();
    1669                 :          0 :     return reinterpret_cast<const ZigClangAPSInt *>(result);
    1670                 :            : }
    1671                 :            : 
    1672                 :          0 : unsigned ZigClangAPValue_getArrayInitializedElts(const ZigClangAPValue *self) {
    1673                 :          0 :     auto casted = reinterpret_cast<const clang::APValue *>(self);
    1674                 :          0 :     return casted->getArrayInitializedElts();
    1675                 :            : }
    1676                 :            : 
    1677                 :          0 : const ZigClangAPValue *ZigClangAPValue_getArrayInitializedElt(const ZigClangAPValue *self, unsigned i) {
    1678                 :          0 :     auto casted = reinterpret_cast<const clang::APValue *>(self);
    1679                 :          0 :     const clang::APValue *result = &casted->getArrayInitializedElt(i);
    1680                 :          0 :     return reinterpret_cast<const ZigClangAPValue *>(result);
    1681                 :            : }
    1682                 :            : 
    1683                 :          0 : const ZigClangAPValue *ZigClangAPValue_getArrayFiller(const ZigClangAPValue *self) {
    1684                 :          0 :     auto casted = reinterpret_cast<const clang::APValue *>(self);
    1685                 :          0 :     const clang::APValue *result = &casted->getArrayFiller();
    1686                 :          0 :     return reinterpret_cast<const ZigClangAPValue *>(result);
    1687                 :            : }
    1688                 :            : 
    1689                 :          0 : unsigned ZigClangAPValue_getArraySize(const ZigClangAPValue *self) {
    1690                 :          0 :     auto casted = reinterpret_cast<const clang::APValue *>(self);
    1691                 :          0 :     return casted->getArraySize();
    1692                 :            : }
    1693                 :            : 
    1694                 :          0 : const ZigClangAPSInt *ZigClangAPSInt_negate(const ZigClangAPSInt *self) {
    1695                 :          0 :     auto casted = reinterpret_cast<const llvm::APSInt *>(self);
    1696                 :          0 :     llvm::APSInt *result = new llvm::APSInt();
    1697                 :          0 :     *result = *casted;
    1698                 :          0 :     *result = -*result;
    1699                 :          0 :     return reinterpret_cast<const ZigClangAPSInt *>(result);
    1700                 :            : }
    1701                 :            : 
    1702                 :          0 : void ZigClangAPSInt_free(const ZigClangAPSInt *self) {
    1703                 :          0 :     auto casted = reinterpret_cast<const llvm::APSInt *>(self);
    1704         [ #  # ]:          0 :     delete casted;
    1705                 :          0 : }
    1706                 :            : 
    1707                 :          0 : bool ZigClangAPSInt_isSigned(const ZigClangAPSInt *self) {
    1708                 :          0 :     auto casted = reinterpret_cast<const llvm::APSInt *>(self);
    1709                 :          0 :     return casted->isSigned();
    1710                 :            : }
    1711                 :            : 
    1712                 :          0 : bool ZigClangAPSInt_isNegative(const ZigClangAPSInt *self) {
    1713                 :          0 :     auto casted = reinterpret_cast<const llvm::APSInt *>(self);
    1714                 :          0 :     return casted->isNegative();
    1715                 :            : }
    1716                 :            : 
    1717                 :          0 : const uint64_t *ZigClangAPSInt_getRawData(const ZigClangAPSInt *self) {
    1718                 :          0 :     auto casted = reinterpret_cast<const llvm::APSInt *>(self);
    1719                 :          0 :     return casted->getRawData();
    1720                 :            : }
    1721                 :            : 
    1722                 :          0 : unsigned ZigClangAPSInt_getNumWords(const ZigClangAPSInt *self) {
    1723                 :          0 :     auto casted = reinterpret_cast<const llvm::APSInt *>(self);
    1724                 :          0 :     return casted->getNumWords();
    1725                 :            : }
    1726                 :            : 
    1727                 :          0 : const ZigClangExpr *ZigClangAPValueLValueBase_dyn_cast_Expr(ZigClangAPValueLValueBase self) {
    1728                 :          0 :     clang::APValue::LValueBase casted = bitcast(self);
    1729                 :          0 :     const clang::Expr *expr = casted.dyn_cast<const clang::Expr *>();
    1730                 :          0 :     return reinterpret_cast<const ZigClangExpr *>(expr);
    1731                 :            : }
    1732                 :            : 
    1733                 :          0 : ZigClangAPValueLValueBase ZigClangAPValue_getLValueBase(const ZigClangAPValue *self) {
    1734                 :          0 :     auto casted = reinterpret_cast<const clang::APValue *>(self);
    1735                 :          0 :     clang::APValue::LValueBase lval_base = casted->getLValueBase();
    1736                 :          0 :     return bitcast(lval_base);
    1737                 :            : }
    1738                 :            : 
    1739                 :          0 : ZigClangASTUnit *ZigClangLoadFromCommandLine(const char **args_begin, const char **args_end,
    1740                 :            :     struct Stage2ErrorMsg **errors_ptr, size_t *errors_len, const char *resources_path)
    1741                 :            : {
    1742                 :          0 :     clang::IntrusiveRefCntPtr<clang::DiagnosticsEngine> diags(clang::CompilerInstance::createDiagnostics(new clang::DiagnosticOptions));
    1743                 :            : 
    1744                 :          0 :     std::shared_ptr<clang::PCHContainerOperations> pch_container_ops = std::make_shared<clang::PCHContainerOperations>();
    1745                 :            : 
    1746                 :          0 :     bool only_local_decls = true;
    1747                 :          0 :     bool capture_diagnostics = true;
    1748                 :          0 :     bool user_files_are_volatile = true;
    1749                 :          0 :     bool allow_pch_with_compiler_errors = false;
    1750                 :          0 :     bool single_file_parse = false;
    1751                 :          0 :     bool for_serialization = false;
    1752                 :          0 :     std::unique_ptr<clang::ASTUnit> *err_unit = new std::unique_ptr<clang::ASTUnit>();
    1753                 :          0 :     clang::ASTUnit *ast_unit = clang::ASTUnit::LoadFromCommandLine(
    1754                 :            :             args_begin, args_end,
    1755                 :            :             pch_container_ops, diags, resources_path,
    1756                 :            :             only_local_decls, capture_diagnostics, clang::None, true, 0, clang::TU_Complete,
    1757                 :            :             false, false, allow_pch_with_compiler_errors, clang::SkipFunctionBodiesScope::None,
    1758                 :            :             single_file_parse, user_files_are_volatile, for_serialization, clang::None, err_unit,
    1759                 :          0 :             nullptr);
    1760                 :            : 
    1761                 :            :     // Early failures in LoadFromCommandLine may return with ErrUnit unset.
    1762 [ #  # ][ #  # ]:          0 :     if (!ast_unit && !err_unit) {
    1763                 :          0 :         return nullptr;
    1764                 :            :     }
    1765                 :            : 
    1766         [ #  # ]:          0 :     if (diags->getClient()->getNumErrors() > 0) {
    1767         [ #  # ]:          0 :         if (ast_unit) {
    1768                 :          0 :             *err_unit = std::unique_ptr<clang::ASTUnit>(ast_unit);
    1769                 :            :         }
    1770                 :            : 
    1771                 :          0 :         size_t cap = 4;
    1772                 :          0 :         *errors_len = 0;
    1773                 :          0 :         *errors_ptr = reinterpret_cast<Stage2ErrorMsg*>(malloc(cap * sizeof(Stage2ErrorMsg)));
    1774         [ #  # ]:          0 :         if (*errors_ptr == nullptr) {
    1775                 :          0 :             return nullptr;
    1776                 :            :         }
    1777                 :            : 
    1778                 :          0 :         for (clang::ASTUnit::stored_diag_iterator it = (*err_unit)->stored_diag_begin(),
    1779                 :          0 :                 it_end = (*err_unit)->stored_diag_end();
    1780         [ #  # ]:          0 :                 it != it_end; ++it)
    1781                 :            :         {
    1782      [ #  #  # ]:          0 :             switch (it->getLevel()) {
    1783                 :          0 :                 case clang::DiagnosticsEngine::Ignored:
    1784                 :            :                 case clang::DiagnosticsEngine::Note:
    1785                 :            :                 case clang::DiagnosticsEngine::Remark:
    1786                 :            :                 case clang::DiagnosticsEngine::Warning:
    1787                 :          0 :                     continue;
    1788                 :          0 :                 case clang::DiagnosticsEngine::Error:
    1789                 :            :                 case clang::DiagnosticsEngine::Fatal:
    1790                 :          0 :                     break;
    1791                 :            :             }
    1792                 :          0 :             llvm::StringRef msg_str_ref = it->getMessage();
    1793         [ #  # ]:          0 :             if (*errors_len >= cap) {
    1794                 :          0 :                 cap *= 2;
    1795                 :            :                 Stage2ErrorMsg *new_errors = reinterpret_cast<Stage2ErrorMsg *>(
    1796                 :          0 :                         realloc(*errors_ptr, cap * sizeof(Stage2ErrorMsg)));
    1797         [ #  # ]:          0 :                 if (new_errors == nullptr) {
    1798                 :          0 :                     free(*errors_ptr);
    1799                 :          0 :                     *errors_ptr = nullptr;
    1800                 :          0 :                     *errors_len = 0;
    1801                 :          0 :                     return nullptr;
    1802                 :            :                 }
    1803                 :          0 :                 *errors_ptr = new_errors;
    1804                 :            :             }
    1805                 :          0 :             Stage2ErrorMsg *msg = *errors_ptr + *errors_len;
    1806                 :          0 :             *errors_len += 1;
    1807                 :          0 :             msg->msg_ptr = (const char *)msg_str_ref.bytes_begin();
    1808                 :          0 :             msg->msg_len = msg_str_ref.size();
    1809                 :            : 
    1810                 :          0 :             clang::FullSourceLoc fsl = it->getLocation();
    1811         [ #  # ]:          0 :             if (fsl.hasManager()) {
    1812                 :          0 :                 clang::FileID file_id = fsl.getFileID();
    1813                 :          0 :                 clang::StringRef filename = fsl.getManager().getFilename(fsl);
    1814         [ #  # ]:          0 :                 if (filename.empty()) {
    1815                 :          0 :                     msg->filename_ptr = nullptr;
    1816                 :            :                 } else {
    1817                 :          0 :                     msg->filename_ptr = (const char *)filename.bytes_begin();
    1818                 :          0 :                     msg->filename_len = filename.size();
    1819                 :            :                 }
    1820                 :          0 :                 msg->source = (const char *)fsl.getManager().getBufferData(file_id).bytes_begin();
    1821                 :          0 :                 msg->line = fsl.getSpellingLineNumber() - 1;
    1822                 :          0 :                 msg->column = fsl.getSpellingColumnNumber() - 1;
    1823                 :          0 :                 msg->offset = fsl.getManager().getFileOffset(fsl);
    1824                 :            :             } else {
    1825                 :            :                 // The only known way this gets triggered right now is if you have a lot of errors
    1826                 :            :                 // clang emits "too many errors emitted, stopping now"
    1827                 :          0 :                 msg->filename_ptr = nullptr;
    1828                 :          0 :                 msg->source = nullptr;
    1829                 :            :             }
    1830                 :            :         }
    1831                 :            : 
    1832         [ #  # ]:          0 :         if (*errors_len == 0) {
    1833                 :          0 :             free(*errors_ptr);
    1834                 :          0 :             *errors_ptr = nullptr;
    1835                 :            :         }
    1836                 :            : 
    1837                 :          0 :         return nullptr;
    1838                 :            :     }
    1839                 :            : 
    1840                 :          0 :     return reinterpret_cast<ZigClangASTUnit *>(ast_unit);
    1841                 :            : }
    1842                 :            : 
    1843                 :          0 : void ZigClangErrorMsg_delete(Stage2ErrorMsg *ptr, size_t len) {
    1844                 :          0 :     free(ptr);
    1845                 :          0 : }
    1846                 :            : 
    1847                 :          0 : void ZigClangASTUnit_delete(struct ZigClangASTUnit *self) {
    1848         [ #  # ]:          0 :     delete reinterpret_cast<clang::ASTUnit *>(self);
    1849                 :          0 : }
    1850                 :            : 
    1851                 :          0 : struct ZigClangQualType ZigClangVarDecl_getType(const struct ZigClangVarDecl *self) {
    1852                 :          0 :     auto casted = reinterpret_cast<const clang::VarDecl *>(self);
    1853                 :          0 :     return bitcast(casted->getType());
    1854                 :            : }
    1855                 :            : 
    1856                 :          0 : const struct ZigClangExpr *ZigClangVarDecl_getInit(const struct ZigClangVarDecl *self) {
    1857                 :          0 :     auto casted = reinterpret_cast<const clang::VarDecl *>(self);
    1858                 :          0 :     return reinterpret_cast<const ZigClangExpr *>(casted->getInit());
    1859                 :            : }
    1860                 :            : 
    1861                 :          0 : enum ZigClangVarDecl_TLSKind ZigClangVarDecl_getTLSKind(const ZigClangVarDecl *self) {
    1862                 :          0 :     auto casted = reinterpret_cast<const clang::VarDecl *>(self);
    1863                 :          0 :     return (ZigClangVarDecl_TLSKind)casted->getTLSKind();
    1864                 :            : }
    1865                 :            : 
    1866                 :          0 : enum ZigClangBuiltinTypeKind ZigClangBuiltinType_getKind(const struct ZigClangBuiltinType *self) {
    1867                 :          0 :     auto casted = reinterpret_cast<const clang::BuiltinType *>(self);
    1868                 :          0 :     return (ZigClangBuiltinTypeKind)casted->getKind();
    1869                 :            : }
    1870                 :            : 
    1871                 :          0 : bool ZigClangFunctionType_getNoReturnAttr(const struct ZigClangFunctionType *self) {
    1872                 :          0 :     auto casted = reinterpret_cast<const clang::FunctionType *>(self);
    1873                 :          0 :     return casted->getNoReturnAttr();
    1874                 :            : }
    1875                 :            : 
    1876                 :          0 : enum ZigClangCallingConv ZigClangFunctionType_getCallConv(const struct ZigClangFunctionType *self) {
    1877                 :          0 :     auto casted = reinterpret_cast<const clang::FunctionType *>(self);
    1878                 :          0 :     return (ZigClangCallingConv)casted->getCallConv();
    1879                 :            : }
    1880                 :            : 
    1881                 :          0 : struct ZigClangQualType ZigClangFunctionType_getReturnType(const struct ZigClangFunctionType *self) {
    1882                 :          0 :     auto casted = reinterpret_cast<const clang::FunctionType *>(self);
    1883                 :          0 :     return bitcast(casted->getReturnType());
    1884                 :            : }
    1885                 :            : 
    1886                 :          0 : bool ZigClangFunctionProtoType_isVariadic(const struct ZigClangFunctionProtoType *self) {
    1887                 :          0 :     auto casted = reinterpret_cast<const clang::FunctionProtoType *>(self);
    1888                 :          0 :     return casted->isVariadic();
    1889                 :            : }
    1890                 :            : 
    1891                 :          0 : unsigned ZigClangFunctionProtoType_getNumParams(const struct ZigClangFunctionProtoType *self) {
    1892                 :          0 :     auto casted = reinterpret_cast<const clang::FunctionProtoType *>(self);
    1893                 :          0 :     return casted->getNumParams();
    1894                 :            : }
    1895                 :            : 
    1896                 :          0 : struct ZigClangQualType ZigClangFunctionProtoType_getParamType(const struct ZigClangFunctionProtoType *self,
    1897                 :            :         unsigned index)
    1898                 :            : {
    1899                 :          0 :     auto casted = reinterpret_cast<const clang::FunctionProtoType *>(self);
    1900                 :          0 :     return bitcast(casted->getParamType(index));
    1901                 :            : }
    1902                 :            : 
    1903                 :          0 : ZigClangCompoundStmt_const_body_iterator ZigClangCompoundStmt_body_begin(const struct ZigClangCompoundStmt *self) {
    1904                 :          0 :     auto casted = reinterpret_cast<const clang::CompoundStmt *>(self);
    1905                 :          0 :     return bitcast(casted->body_begin());
    1906                 :            : }
    1907                 :            : 
    1908                 :          0 : ZigClangCompoundStmt_const_body_iterator ZigClangCompoundStmt_body_end(const struct ZigClangCompoundStmt *self) {
    1909                 :          0 :     auto casted = reinterpret_cast<const clang::CompoundStmt *>(self);
    1910                 :          0 :     return bitcast(casted->body_end());
    1911                 :            : }
    1912                 :            : 
    1913                 :          0 : ZigClangDeclStmt_const_decl_iterator ZigClangDeclStmt_decl_begin(const struct ZigClangDeclStmt *self) {
    1914                 :          0 :     auto casted = reinterpret_cast<const clang::DeclStmt *>(self);
    1915                 :          0 :     return bitcast(casted->decl_begin());
    1916                 :            : }
    1917                 :            : 
    1918                 :          0 : ZigClangDeclStmt_const_decl_iterator ZigClangDeclStmt_decl_end(const struct ZigClangDeclStmt *self) {
    1919                 :          0 :     auto casted = reinterpret_cast<const clang::DeclStmt *>(self);
    1920                 :          0 :     return bitcast(casted->decl_end());
    1921                 :            : }
    1922                 :            : 
    1923                 :          0 : unsigned ZigClangAPFloat_convertToHexString(const ZigClangAPFloat *self, char *DST,
    1924                 :            :         unsigned HexDigits, bool UpperCase, enum ZigClangAPFloat_roundingMode RM)
    1925                 :            : {
    1926                 :          0 :     auto casted = reinterpret_cast<const llvm::APFloat *>(self);
    1927                 :          0 :     return casted->convertToHexString(DST, HexDigits, UpperCase, (llvm::APFloat::roundingMode)RM);
    1928                 :            : }
    1929                 :            : 
    1930                 :          0 : enum ZigClangStringLiteral_StringKind ZigClangStringLiteral_getKind(const struct ZigClangStringLiteral *self) {
    1931                 :          0 :     auto casted = reinterpret_cast<const clang::StringLiteral *>(self);
    1932                 :          0 :     return (ZigClangStringLiteral_StringKind)casted->getKind();
    1933                 :            : }
    1934                 :            : 
    1935                 :          0 : const char *ZigClangStringLiteral_getString_bytes_begin_size(const struct ZigClangStringLiteral *self, size_t *len) {
    1936                 :          0 :     auto casted = reinterpret_cast<const clang::StringLiteral *>(self);
    1937                 :          0 :     llvm::StringRef str_ref = casted->getString();
    1938                 :          0 :     *len = str_ref.size();
    1939                 :          0 :     return (const char *)str_ref.bytes_begin();
    1940                 :            : }
    1941                 :            : 
    1942                 :          0 : const struct ZigClangStringLiteral *ZigClangPredefinedExpr_getFunctionName(
    1943                 :            :         const struct ZigClangPredefinedExpr *self)
    1944                 :            : {
    1945                 :          0 :     auto casted = reinterpret_cast<const clang::PredefinedExpr *>(self);
    1946                 :          0 :     const clang::StringLiteral *result = casted->getFunctionName();
    1947                 :          0 :     return reinterpret_cast<const struct ZigClangStringLiteral *>(result);
    1948                 :            : }
    1949                 :            : 
    1950                 :          0 : ZigClangSourceLocation ZigClangImplicitCastExpr_getBeginLoc(const struct ZigClangImplicitCastExpr *self) {
    1951                 :          0 :     auto casted = reinterpret_cast<const clang::ImplicitCastExpr *>(self);
    1952                 :          0 :     return bitcast(casted->getBeginLoc());
    1953                 :            : }
    1954                 :            : 
    1955                 :          0 : enum ZigClangCK ZigClangImplicitCastExpr_getCastKind(const struct ZigClangImplicitCastExpr *self) {
    1956                 :          0 :     auto casted = reinterpret_cast<const clang::ImplicitCastExpr *>(self);
    1957                 :          0 :     return (ZigClangCK)casted->getCastKind();
    1958                 :            : }
    1959                 :            : 
    1960                 :          0 : const struct ZigClangExpr *ZigClangImplicitCastExpr_getSubExpr(const struct ZigClangImplicitCastExpr *self) {
    1961                 :          0 :     auto casted = reinterpret_cast<const clang::ImplicitCastExpr *>(self);
    1962                 :          0 :     return reinterpret_cast<const struct ZigClangExpr *>(casted->getSubExpr());
    1963                 :            : }
    1964                 :            : 
    1965                 :          0 : struct ZigClangQualType ZigClangArrayType_getElementType(const struct ZigClangArrayType *self) {
    1966                 :          0 :     auto casted = reinterpret_cast<const clang::ArrayType *>(self);
    1967                 :          0 :     return bitcast(casted->getElementType());
    1968                 :            : }
    1969                 :            : 
    1970                 :          0 : const struct ZigClangValueDecl *ZigClangDeclRefExpr_getDecl(const struct ZigClangDeclRefExpr *self) {
    1971                 :          0 :     auto casted = reinterpret_cast<const clang::DeclRefExpr *>(self);
    1972                 :          0 :     return reinterpret_cast<const struct ZigClangValueDecl *>(casted->getDecl());
    1973                 :            : }
    1974                 :            : 
    1975                 :          0 : struct ZigClangQualType ZigClangParenType_getInnerType(const struct ZigClangParenType *self) {
    1976                 :          0 :     auto casted = reinterpret_cast<const clang::ParenType *>(self);
    1977                 :          0 :     return bitcast(casted->getInnerType());
    1978                 :            : }
    1979                 :            : 
    1980                 :          0 : struct ZigClangQualType ZigClangAttributedType_getEquivalentType(const struct ZigClangAttributedType *self) {
    1981                 :          0 :     auto casted = reinterpret_cast<const clang::AttributedType *>(self);
    1982                 :          0 :     return bitcast(casted->getEquivalentType());
    1983                 :            : }
    1984                 :            : 
    1985                 :          0 : struct ZigClangQualType ZigClangElaboratedType_getNamedType(const struct ZigClangElaboratedType *self) {
    1986                 :          0 :     auto casted = reinterpret_cast<const clang::ElaboratedType *>(self);
    1987                 :          0 :     return bitcast(casted->getNamedType());
    1988                 :            : }
    1989                 :            : 
    1990                 :          0 : struct ZigClangSourceLocation ZigClangCStyleCastExpr_getBeginLoc(const struct ZigClangCStyleCastExpr *self) {
    1991                 :          0 :     auto casted = reinterpret_cast<const clang::CStyleCastExpr *>(self);
    1992                 :          0 :     return bitcast(casted->getBeginLoc());
    1993                 :            : }
    1994                 :            : 
    1995                 :          0 : const struct ZigClangExpr *ZigClangCStyleCastExpr_getSubExpr(const struct ZigClangCStyleCastExpr *self) {
    1996                 :          0 :     auto casted = reinterpret_cast<const clang::CStyleCastExpr *>(self);
    1997                 :          0 :     return reinterpret_cast<const struct ZigClangExpr *>(casted->getSubExpr());
    1998                 :            : }
    1999                 :            : 
    2000                 :          0 : struct ZigClangQualType ZigClangCStyleCastExpr_getType(const struct ZigClangCStyleCastExpr *self) {
    2001                 :          0 :     auto casted = reinterpret_cast<const clang::CStyleCastExpr *>(self);
    2002                 :          0 :     return bitcast(casted->getType());
    2003                 :            : }
    2004                 :            : 
    2005                 :          0 : bool ZigClangIntegerLiteral_EvaluateAsInt(const struct ZigClangIntegerLiteral *self, struct ZigClangExprEvalResult *result, const struct ZigClangASTContext *ctx) {
    2006                 :          0 :     auto casted_self = reinterpret_cast<const clang::IntegerLiteral *>(self);
    2007                 :          0 :     auto casted_ctx = reinterpret_cast<const clang::ASTContext *>(ctx);
    2008                 :          0 :     clang::Expr::EvalResult eval_result;
    2009         [ #  # ]:          0 :     if (!casted_self->EvaluateAsInt(eval_result, *casted_ctx)) {
    2010                 :          0 :         return false;
    2011                 :            :     }
    2012                 :          0 :     *result = bitcast(eval_result);
    2013                 :          0 :     return true;
    2014                 :            : }
    2015                 :            : 
    2016                 :          0 : struct ZigClangSourceLocation ZigClangIntegerLiteral_getBeginLoc(const struct ZigClangIntegerLiteral *self) {
    2017                 :          0 :     auto casted = reinterpret_cast<const clang::IntegerLiteral *>(self);
    2018                 :          0 :     return bitcast(casted->getBeginLoc());
    2019                 :            : }
    2020                 :            : 
    2021                 :          0 : const struct ZigClangExpr *ZigClangReturnStmt_getRetValue(const struct ZigClangReturnStmt *self) {
    2022                 :          0 :     auto casted = reinterpret_cast<const clang::ReturnStmt *>(self);
    2023                 :          0 :     return reinterpret_cast<const struct ZigClangExpr *>(casted->getRetValue());
    2024                 :            : }
    2025                 :            : 
    2026                 :          0 : enum ZigClangBO ZigClangBinaryOperator_getOpcode(const struct ZigClangBinaryOperator *self) {
    2027                 :          0 :     auto casted = reinterpret_cast<const clang::BinaryOperator *>(self);
    2028                 :          0 :     return (ZigClangBO)casted->getOpcode();
    2029                 :            : }
    2030                 :            : 
    2031                 :          0 : struct ZigClangSourceLocation ZigClangBinaryOperator_getBeginLoc(const struct ZigClangBinaryOperator *self) {
    2032                 :          0 :     auto casted = reinterpret_cast<const clang::BinaryOperator *>(self);
    2033                 :          0 :     return bitcast(casted->getBeginLoc());
    2034                 :            : }
    2035                 :            : 
    2036                 :          0 : const struct ZigClangExpr *ZigClangBinaryOperator_getLHS(const struct ZigClangBinaryOperator *self) {
    2037                 :          0 :     auto casted = reinterpret_cast<const clang::BinaryOperator *>(self);
    2038                 :          0 :     return reinterpret_cast<const struct ZigClangExpr *>(casted->getLHS());
    2039                 :            : }
    2040                 :            : 
    2041                 :          0 : const struct ZigClangExpr *ZigClangBinaryOperator_getRHS(const struct ZigClangBinaryOperator *self) {
    2042                 :          0 :     auto casted = reinterpret_cast<const clang::BinaryOperator *>(self);
    2043                 :          0 :     return reinterpret_cast<const struct ZigClangExpr *>(casted->getRHS());
    2044                 :            : }
    2045                 :            : 
    2046                 :          0 : struct ZigClangQualType ZigClangBinaryOperator_getType(const struct ZigClangBinaryOperator *self) {
    2047                 :          0 :     auto casted = reinterpret_cast<const clang::BinaryOperator *>(self);
    2048                 :          0 :     return bitcast(casted->getType());
    2049                 :            : }

Generated by: LCOV version 1.14