Commit 6284a4c534

Andrew Kelley <andrew@ziglang.org>
2019-04-12 09:56:38
translate-c: move some code to the C API
See #1964
1 parent f860493
src/translate_c.cpp
@@ -509,11 +509,11 @@ static const ZigClangType *qual_type_canon(ZigClangQualType qt) {
 
 static ZigClangQualType get_expr_qual_type(Context *c, const clang::Expr *expr) {
     // String literals in C are `char *` but they should really be `const char *`.
-    if (expr->getStmtClass() == clang::Stmt::ImplicitCastExprClass) {
+    if ((ZigClangStmtClass)expr->getStmtClass() == ZigClangStmt_ImplicitCastExprClass) {
         const clang::ImplicitCastExpr *cast_expr = static_cast<const clang::ImplicitCastExpr *>(expr);
         if (cast_expr->getCastKind() == clang::CK_ArrayToPointerDecay) {
             const clang::Expr *sub_expr = cast_expr->getSubExpr();
-            if (sub_expr->getStmtClass() == clang::Stmt::StringLiteralClass) {
+            if ((ZigClangStmtClass)sub_expr->getStmtClass() == ZigClangStmt_StringLiteralClass) {
                 ZigClangQualType array_qt = bitcast(sub_expr->getType());
                 const clang::ArrayType *array_type = reinterpret_cast<const clang::ArrayType *>(
                         ZigClangQualType_getTypePtr(array_qt));
@@ -527,7 +527,7 @@ static ZigClangQualType get_expr_qual_type(Context *c, const clang::Expr *expr)
 }
 
 static ZigClangQualType get_expr_qual_type_before_implicit_cast(Context *c, const clang::Expr *expr) {
-    if (expr->getStmtClass() == clang::Stmt::ImplicitCastExprClass) {
+    if ((ZigClangStmtClass)expr->getStmtClass() == ZigClangStmt_ImplicitCastExprClass) {
         const clang::ImplicitCastExpr *cast_expr = static_cast<const clang::ImplicitCastExpr *>(expr);
         return get_expr_qual_type(c, cast_expr->getSubExpr());
     }
@@ -2791,10 +2791,10 @@ static AstNode *trans_call_expr(Context *c, ResultUsed result_used, TransScope *
     const clang::FunctionProtoType *fn_ty = qual_type_get_fn_proto(bitcast(stmt->getCallee()->getType()), &is_ptr);
     AstNode *callee_node = nullptr;
     if (is_ptr && fn_ty) {
-        if (stmt->getCallee()->getStmtClass() == clang::Stmt::ImplicitCastExprClass) {
+        if ((ZigClangStmtClass)stmt->getCallee()->getStmtClass() == ZigClangStmt_ImplicitCastExprClass) {
             const clang::ImplicitCastExpr *implicit_cast = static_cast<const clang::ImplicitCastExpr *>(stmt->getCallee());
             if (implicit_cast->getCastKind() == clang::CK_FunctionToPointerDecay) {
-                if (implicit_cast->getSubExpr()->getStmtClass() == clang::Stmt::DeclRefExprClass) {
+                if ((ZigClangStmtClass)implicit_cast->getSubExpr()->getStmtClass() == ZigClangStmt_DeclRefExprClass) {
                     const clang::DeclRefExpr *decl_ref = static_cast<const clang::DeclRefExpr *>(implicit_cast->getSubExpr());
                     const clang::Decl *decl = decl_ref->getFoundDecl();
                     if (decl->getKind() == clang::Decl::Function) {
@@ -2898,7 +2898,7 @@ static AstNode *trans_do_loop(Context *c, TransScope *parent_scope, const clang:
 
     AstNode *body_node;
     TransScope *child_scope;
-    if (stmt->getBody()->getStmtClass() == clang::Stmt::CompoundStmtClass) {
+    if ((ZigClangStmtClass)stmt->getBody()->getStmtClass() == ZigClangStmt_CompoundStmtClass) {
         // there's already a block in C, so we'll append our condition to it.
         // c: do {
         // c:   a;
@@ -3051,7 +3051,7 @@ static AstNode *trans_switch_stmt(Context *c, TransScope *parent_scope, const cl
 
     AstNode *body_node;
     const clang::Stmt *body_stmt = stmt->getBody();
-    if (body_stmt->getStmtClass() == clang::Stmt::CompoundStmtClass) {
+    if ((ZigClangStmtClass)body_stmt->getStmtClass() == ZigClangStmt_CompoundStmtClass) {
         if (trans_compound_stmt_inline(c, &switch_scope->base, (const clang::CompoundStmt *)body_stmt,
                                        block_scope->node, nullptr))
         {
@@ -3224,40 +3224,40 @@ static int trans_stmt_extra(Context *c, TransScope *scope, const clang::Stmt *st
         AstNode **out_node, TransScope **out_child_scope,
         TransScope **out_node_scope)
 {
-    clang::Stmt::StmtClass sc = stmt->getStmtClass();
+    ZigClangStmtClass sc = (ZigClangStmtClass)stmt->getStmtClass();
     switch (sc) {
-        case clang::Stmt::ReturnStmtClass:
+        case ZigClangStmt_ReturnStmtClass:
             return wrap_stmt(out_node, out_child_scope, scope,
                     trans_return_stmt(c, scope, (const clang::ReturnStmt *)stmt));
-        case clang::Stmt::CompoundStmtClass:
+        case ZigClangStmt_CompoundStmtClass:
             return wrap_stmt(out_node, out_child_scope, scope,
                     trans_compound_stmt(c, scope, (const clang::CompoundStmt *)stmt, out_node_scope));
-        case clang::Stmt::IntegerLiteralClass:
+        case ZigClangStmt_IntegerLiteralClass:
             return wrap_stmt(out_node, out_child_scope, scope,
                     trans_integer_literal(c, result_used, (const clang::IntegerLiteral *)stmt));
-        case clang::Stmt::ConditionalOperatorClass:
+        case ZigClangStmt_ConditionalOperatorClass:
             return wrap_stmt(out_node, out_child_scope, scope,
                     trans_conditional_operator(c, result_used, scope, (const clang::ConditionalOperator *)stmt));
-        case clang::Stmt::BinaryOperatorClass:
+        case ZigClangStmt_BinaryOperatorClass:
             return wrap_stmt(out_node, out_child_scope, scope,
                     trans_binary_operator(c, result_used, scope, (const clang::BinaryOperator *)stmt));
-        case clang::Stmt::CompoundAssignOperatorClass:
+        case ZigClangStmt_CompoundAssignOperatorClass:
             return wrap_stmt(out_node, out_child_scope, scope,
                     trans_compound_assign_operator(c, result_used, scope, (const clang::CompoundAssignOperator *)stmt));
-        case clang::Stmt::ImplicitCastExprClass:
+        case ZigClangStmt_ImplicitCastExprClass:
             return wrap_stmt(out_node, out_child_scope, scope,
                     trans_implicit_cast_expr(c, result_used, scope, (const clang::ImplicitCastExpr *)stmt));
-        case clang::Stmt::DeclRefExprClass:
+        case ZigClangStmt_DeclRefExprClass:
             return wrap_stmt(out_node, out_child_scope, scope,
                     trans_decl_ref_expr(c, scope, (const clang::DeclRefExpr *)stmt, lrvalue));
-        case clang::Stmt::UnaryOperatorClass:
+        case ZigClangStmt_UnaryOperatorClass:
             return wrap_stmt(out_node, out_child_scope, scope,
                     trans_unary_operator(c, result_used, scope, (const clang::UnaryOperator *)stmt));
-        case clang::Stmt::DeclStmtClass:
+        case ZigClangStmt_DeclStmtClass:
             return trans_local_declaration(c, scope, (const clang::DeclStmt *)stmt, out_node, out_child_scope);
-        case clang::Stmt::DoStmtClass:
-        case clang::Stmt::WhileStmtClass: {
-            AstNode *while_node = sc == clang::Stmt::DoStmtClass
+        case ZigClangStmt_DoStmtClass:
+        case ZigClangStmt_WhileStmtClass: {
+            AstNode *while_node = sc == ZigClangStmt_DoStmtClass
                 ? trans_do_loop(c, scope, (const clang::DoStmt *)stmt)
                 : trans_while_loop(c, scope, (const clang::WhileStmt *)stmt);
 
@@ -3270,559 +3270,559 @@ static int trans_stmt_extra(Context *c, TransScope *scope, const clang::Stmt *st
 
             return wrap_stmt(out_node, out_child_scope, scope, while_node);
         }
-        case clang::Stmt::IfStmtClass:
+        case ZigClangStmt_IfStmtClass:
             return wrap_stmt(out_node, out_child_scope, scope,
                     trans_if_statement(c, scope, (const clang::IfStmt *)stmt));
-        case clang::Stmt::CallExprClass:
+        case ZigClangStmt_CallExprClass:
             return wrap_stmt(out_node, out_child_scope, scope,
                     trans_call_expr(c, result_used, scope, (const clang::CallExpr *)stmt));
-        case clang::Stmt::NullStmtClass:
+        case ZigClangStmt_NullStmtClass:
             *out_node = trans_create_node(c, NodeTypeBlock);
             *out_child_scope = scope;
             return ErrorNone;
-        case clang::Stmt::MemberExprClass:
+        case ZigClangStmt_MemberExprClass:
             return wrap_stmt(out_node, out_child_scope, scope,
                     trans_member_expr(c, result_used, scope, (const clang::MemberExpr *)stmt));
-        case clang::Stmt::ArraySubscriptExprClass:
+        case ZigClangStmt_ArraySubscriptExprClass:
             return wrap_stmt(out_node, out_child_scope, scope,
                     trans_array_subscript_expr(c, result_used, scope, (const clang::ArraySubscriptExpr *)stmt));
-        case clang::Stmt::CStyleCastExprClass:
+        case ZigClangStmt_CStyleCastExprClass:
             return wrap_stmt(out_node, out_child_scope, scope,
                     trans_c_style_cast_expr(c, result_used, scope, (const clang::CStyleCastExpr *)stmt, lrvalue));
-        case clang::Stmt::UnaryExprOrTypeTraitExprClass:
+        case ZigClangStmt_UnaryExprOrTypeTraitExprClass:
             return wrap_stmt(out_node, out_child_scope, scope,
                     trans_unary_expr_or_type_trait_expr(c, result_used, scope, (const clang::UnaryExprOrTypeTraitExpr *)stmt));
-        case clang::Stmt::ForStmtClass: {
+        case ZigClangStmt_ForStmtClass: {
             AstNode *node = trans_for_loop(c, scope, (const clang::ForStmt *)stmt);
             return wrap_stmt(out_node, out_child_scope, scope, node);
         }
-        case clang::Stmt::StringLiteralClass:
+        case ZigClangStmt_StringLiteralClass:
             return wrap_stmt(out_node, out_child_scope, scope,
                     trans_string_literal(c, result_used, scope, (const clang::StringLiteral *)stmt));
-        case clang::Stmt::BreakStmtClass:
+        case ZigClangStmt_BreakStmtClass:
             return wrap_stmt(out_node, out_child_scope, scope,
                     trans_break_stmt(c, scope, (const clang::BreakStmt *)stmt));
-        case clang::Stmt::ContinueStmtClass:
+        case ZigClangStmt_ContinueStmtClass:
             return wrap_stmt(out_node, out_child_scope, scope,
                     trans_continue_stmt(c, scope, (const clang::ContinueStmt *)stmt));
-        case clang::Stmt::ParenExprClass:
+        case ZigClangStmt_ParenExprClass:
             return wrap_stmt(out_node, out_child_scope, scope,
                     trans_expr(c, result_used, scope, ((const clang::ParenExpr*)stmt)->getSubExpr(), lrvalue));
-        case clang::Stmt::SwitchStmtClass:
+        case ZigClangStmt_SwitchStmtClass:
             return wrap_stmt(out_node, out_child_scope, scope,
                              trans_switch_stmt(c, scope, (const clang::SwitchStmt *)stmt));
-        case clang::Stmt::CaseStmtClass:
+        case ZigClangStmt_CaseStmtClass:
             return trans_switch_case(c, scope, (const clang::CaseStmt *)stmt, out_node, out_child_scope);
-        case clang::Stmt::DefaultStmtClass:
+        case ZigClangStmt_DefaultStmtClass:
             return trans_switch_default(c, scope, (const clang::DefaultStmt *)stmt, out_node, out_child_scope);
-        case clang::Stmt::ConstantExprClass:
+        case ZigClangStmt_ConstantExprClass:
             return wrap_stmt(out_node, out_child_scope, scope,
                     trans_constant_expr(c, result_used, (const clang::ConstantExpr *)stmt));
-        case clang::Stmt::PredefinedExprClass:
+        case ZigClangStmt_PredefinedExprClass:
             return wrap_stmt(out_node, out_child_scope, scope,
                              trans_predefined_expr(c, result_used, scope, (const clang::PredefinedExpr *)stmt));
-        case clang::Stmt::StmtExprClass:
+        case ZigClangStmt_StmtExprClass:
             return wrap_stmt(out_node, out_child_scope, scope,
                     trans_stmt_expr(c, result_used, scope, (const clang::StmtExpr *)stmt, out_node_scope));
-        case clang::Stmt::NoStmtClass:
+        case ZigClangStmt_NoStmtClass:
             emit_warning(c, bitcast(stmt->getBeginLoc()), "TODO handle C NoStmtClass");
             return ErrorUnexpected;
-        case clang::Stmt::GCCAsmStmtClass:
+        case ZigClangStmt_GCCAsmStmtClass:
             emit_warning(c, bitcast(stmt->getBeginLoc()), "TODO handle C GCCAsmStmtClass");
             return ErrorUnexpected;
-        case clang::Stmt::MSAsmStmtClass:
+        case ZigClangStmt_MSAsmStmtClass:
             emit_warning(c, bitcast(stmt->getBeginLoc()), "TODO handle C MSAsmStmtClass");
             return ErrorUnexpected;
-        case clang::Stmt::AttributedStmtClass:
+        case ZigClangStmt_AttributedStmtClass:
             emit_warning(c, bitcast(stmt->getBeginLoc()), "TODO handle C AttributedStmtClass");
             return ErrorUnexpected;
-        case clang::Stmt::CXXCatchStmtClass:
+        case ZigClangStmt_CXXCatchStmtClass:
             emit_warning(c, bitcast(stmt->getBeginLoc()), "TODO handle C CXXCatchStmtClass");
             return ErrorUnexpected;
-        case clang::Stmt::CXXForRangeStmtClass:
+        case ZigClangStmt_CXXForRangeStmtClass:
             emit_warning(c, bitcast(stmt->getBeginLoc()), "TODO handle C CXXForRangeStmtClass");
             return ErrorUnexpected;
-        case clang::Stmt::CXXTryStmtClass:
+        case ZigClangStmt_CXXTryStmtClass:
             emit_warning(c, bitcast(stmt->getBeginLoc()), "TODO handle C CXXTryStmtClass");
             return ErrorUnexpected;
-        case clang::Stmt::CapturedStmtClass:
+        case ZigClangStmt_CapturedStmtClass:
             emit_warning(c, bitcast(stmt->getBeginLoc()), "TODO handle C CapturedStmtClass");
             return ErrorUnexpected;
-        case clang::Stmt::CoreturnStmtClass:
+        case ZigClangStmt_CoreturnStmtClass:
             emit_warning(c, bitcast(stmt->getBeginLoc()), "TODO handle C CoreturnStmtClass");
             return ErrorUnexpected;
-        case clang::Stmt::CoroutineBodyStmtClass:
+        case ZigClangStmt_CoroutineBodyStmtClass:
             emit_warning(c, bitcast(stmt->getBeginLoc()), "TODO handle C CoroutineBodyStmtClass");
             return ErrorUnexpected;
-        case clang::Stmt::BinaryConditionalOperatorClass:
+        case ZigClangStmt_BinaryConditionalOperatorClass:
             emit_warning(c, bitcast(stmt->getBeginLoc()), "TODO handle C BinaryConditionalOperatorClass");
             return ErrorUnexpected;
-        case clang::Stmt::AddrLabelExprClass:
+        case ZigClangStmt_AddrLabelExprClass:
             emit_warning(c, bitcast(stmt->getBeginLoc()), "TODO handle C AddrLabelExprClass");
             return ErrorUnexpected;
-        case clang::Stmt::ArrayInitIndexExprClass:
+        case ZigClangStmt_ArrayInitIndexExprClass:
             emit_warning(c, bitcast(stmt->getBeginLoc()), "TODO handle C ArrayInitIndexExprClass");
             return ErrorUnexpected;
-        case clang::Stmt::ArrayInitLoopExprClass:
+        case ZigClangStmt_ArrayInitLoopExprClass:
             emit_warning(c, bitcast(stmt->getBeginLoc()), "TODO handle C ArrayInitLoopExprClass");
             return ErrorUnexpected;
-        case clang::Stmt::ArrayTypeTraitExprClass:
+        case ZigClangStmt_ArrayTypeTraitExprClass:
             emit_warning(c, bitcast(stmt->getBeginLoc()), "TODO handle C ArrayTypeTraitExprClass");
             return ErrorUnexpected;
-        case clang::Stmt::AsTypeExprClass:
+        case ZigClangStmt_AsTypeExprClass:
             emit_warning(c, bitcast(stmt->getBeginLoc()), "TODO handle C AsTypeExprClass");
             return ErrorUnexpected;
-        case clang::Stmt::AtomicExprClass:
+        case ZigClangStmt_AtomicExprClass:
             emit_warning(c, bitcast(stmt->getBeginLoc()), "TODO handle C AtomicExprClass");
             return ErrorUnexpected;
-        case clang::Stmt::BlockExprClass:
+        case ZigClangStmt_BlockExprClass:
             emit_warning(c, bitcast(stmt->getBeginLoc()), "TODO handle C BlockExprClass");
             return ErrorUnexpected;
-        case clang::Stmt::CXXBindTemporaryExprClass:
+        case ZigClangStmt_CXXBindTemporaryExprClass:
             emit_warning(c, bitcast(stmt->getBeginLoc()), "TODO handle C CXXBindTemporaryExprClass");
             return ErrorUnexpected;
-        case clang::Stmt::CXXBoolLiteralExprClass:
+        case ZigClangStmt_CXXBoolLiteralExprClass:
             emit_warning(c, bitcast(stmt->getBeginLoc()), "TODO handle C CXXBoolLiteralExprClass");
             return ErrorUnexpected;
-        case clang::Stmt::CXXConstructExprClass:
+        case ZigClangStmt_CXXConstructExprClass:
             emit_warning(c, bitcast(stmt->getBeginLoc()), "TODO handle C CXXConstructExprClass");
             return ErrorUnexpected;
-        case clang::Stmt::CXXTemporaryObjectExprClass:
+        case ZigClangStmt_CXXTemporaryObjectExprClass:
             emit_warning(c, bitcast(stmt->getBeginLoc()), "TODO handle C CXXTemporaryObjectExprClass");
             return ErrorUnexpected;
-        case clang::Stmt::CXXDefaultArgExprClass:
+        case ZigClangStmt_CXXDefaultArgExprClass:
             emit_warning(c, bitcast(stmt->getBeginLoc()), "TODO handle C CXXDefaultArgExprClass");
             return ErrorUnexpected;
-        case clang::Stmt::CXXDefaultInitExprClass:
+        case ZigClangStmt_CXXDefaultInitExprClass:
             emit_warning(c, bitcast(stmt->getBeginLoc()), "TODO handle C CXXDefaultInitExprClass");
             return ErrorUnexpected;
-        case clang::Stmt::CXXDeleteExprClass:
+        case ZigClangStmt_CXXDeleteExprClass:
             emit_warning(c, bitcast(stmt->getBeginLoc()), "TODO handle C CXXDeleteExprClass");
             return ErrorUnexpected;
-        case clang::Stmt::CXXDependentScopeMemberExprClass:
+        case ZigClangStmt_CXXDependentScopeMemberExprClass:
             emit_warning(c, bitcast(stmt->getBeginLoc()), "TODO handle C CXXDependentScopeMemberExprClass");
             return ErrorUnexpected;
-        case clang::Stmt::CXXFoldExprClass:
+        case ZigClangStmt_CXXFoldExprClass:
             emit_warning(c, bitcast(stmt->getBeginLoc()), "TODO handle C CXXFoldExprClass");
             return ErrorUnexpected;
-        case clang::Stmt::CXXInheritedCtorInitExprClass:
+        case ZigClangStmt_CXXInheritedCtorInitExprClass:
             emit_warning(c, bitcast(stmt->getBeginLoc()), "TODO handle C CXXInheritedCtorInitExprClass");
             return ErrorUnexpected;
-        case clang::Stmt::CXXNewExprClass:
+        case ZigClangStmt_CXXNewExprClass:
             emit_warning(c, bitcast(stmt->getBeginLoc()), "TODO handle C CXXNewExprClass");
             return ErrorUnexpected;
-        case clang::Stmt::CXXNoexceptExprClass:
+        case ZigClangStmt_CXXNoexceptExprClass:
             emit_warning(c, bitcast(stmt->getBeginLoc()), "TODO handle C CXXNoexceptExprClass");
             return ErrorUnexpected;
-        case clang::Stmt::CXXNullPtrLiteralExprClass:
+        case ZigClangStmt_CXXNullPtrLiteralExprClass:
             emit_warning(c, bitcast(stmt->getBeginLoc()), "TODO handle C CXXNullPtrLiteralExprClass");
             return ErrorUnexpected;
-        case clang::Stmt::CXXPseudoDestructorExprClass:
+        case ZigClangStmt_CXXPseudoDestructorExprClass:
             emit_warning(c, bitcast(stmt->getBeginLoc()), "TODO handle C CXXPseudoDestructorExprClass");
             return ErrorUnexpected;
-        case clang::Stmt::CXXScalarValueInitExprClass:
+        case ZigClangStmt_CXXScalarValueInitExprClass:
             emit_warning(c, bitcast(stmt->getBeginLoc()), "TODO handle C CXXScalarValueInitExprClass");
             return ErrorUnexpected;
-        case clang::Stmt::CXXStdInitializerListExprClass:
+        case ZigClangStmt_CXXStdInitializerListExprClass:
             emit_warning(c, bitcast(stmt->getBeginLoc()), "TODO handle C CXXStdInitializerListExprClass");
             return ErrorUnexpected;
-        case clang::Stmt::CXXThisExprClass:
+        case ZigClangStmt_CXXThisExprClass:
             emit_warning(c, bitcast(stmt->getBeginLoc()), "TODO handle C CXXThisExprClass");
             return ErrorUnexpected;
-        case clang::Stmt::CXXThrowExprClass:
+        case ZigClangStmt_CXXThrowExprClass:
             emit_warning(c, bitcast(stmt->getBeginLoc()), "TODO handle C CXXThrowExprClass");
             return ErrorUnexpected;
-        case clang::Stmt::CXXTypeidExprClass:
+        case ZigClangStmt_CXXTypeidExprClass:
             emit_warning(c, bitcast(stmt->getBeginLoc()), "TODO handle C CXXTypeidExprClass");
             return ErrorUnexpected;
-        case clang::Stmt::CXXUnresolvedConstructExprClass:
+        case ZigClangStmt_CXXUnresolvedConstructExprClass:
             emit_warning(c, bitcast(stmt->getBeginLoc()), "TODO handle C CXXUnresolvedConstructExprClass");
             return ErrorUnexpected;
-        case clang::Stmt::CXXUuidofExprClass:
+        case ZigClangStmt_CXXUuidofExprClass:
             emit_warning(c, bitcast(stmt->getBeginLoc()), "TODO handle C CXXUuidofExprClass");
             return ErrorUnexpected;
-        case clang::Stmt::CUDAKernelCallExprClass:
+        case ZigClangStmt_CUDAKernelCallExprClass:
             emit_warning(c, bitcast(stmt->getBeginLoc()), "TODO handle C CUDAKernelCallExprClass");
             return ErrorUnexpected;
-        case clang::Stmt::CXXMemberCallExprClass:
+        case ZigClangStmt_CXXMemberCallExprClass:
             emit_warning(c, bitcast(stmt->getBeginLoc()), "TODO handle C CXXMemberCallExprClass");
             return ErrorUnexpected;
-        case clang::Stmt::CXXOperatorCallExprClass:
+        case ZigClangStmt_CXXOperatorCallExprClass:
             emit_warning(c, bitcast(stmt->getBeginLoc()), "TODO handle C CXXOperatorCallExprClass");
             return ErrorUnexpected;
-        case clang::Stmt::UserDefinedLiteralClass:
+        case ZigClangStmt_UserDefinedLiteralClass:
             emit_warning(c, bitcast(stmt->getBeginLoc()), "TODO handle C UserDefinedLiteralClass");
             return ErrorUnexpected;
-        case clang::Stmt::CXXFunctionalCastExprClass:
+        case ZigClangStmt_CXXFunctionalCastExprClass:
             emit_warning(c, bitcast(stmt->getBeginLoc()), "TODO handle C CXXFunctionalCastExprClass");
             return ErrorUnexpected;
-        case clang::Stmt::CXXConstCastExprClass:
+        case ZigClangStmt_CXXConstCastExprClass:
             emit_warning(c, bitcast(stmt->getBeginLoc()), "TODO handle C CXXConstCastExprClass");
             return ErrorUnexpected;
-        case clang::Stmt::CXXDynamicCastExprClass:
+        case ZigClangStmt_CXXDynamicCastExprClass:
             emit_warning(c, bitcast(stmt->getBeginLoc()), "TODO handle C CXXDynamicCastExprClass");
             return ErrorUnexpected;
-        case clang::Stmt::CXXReinterpretCastExprClass:
+        case ZigClangStmt_CXXReinterpretCastExprClass:
             emit_warning(c, bitcast(stmt->getBeginLoc()), "TODO handle C CXXReinterpretCastExprClass");
             return ErrorUnexpected;
-        case clang::Stmt::CXXStaticCastExprClass:
+        case ZigClangStmt_CXXStaticCastExprClass:
             emit_warning(c, bitcast(stmt->getBeginLoc()), "TODO handle C CXXStaticCastExprClass");
             return ErrorUnexpected;
-        case clang::Stmt::ObjCBridgedCastExprClass:
+        case ZigClangStmt_ObjCBridgedCastExprClass:
             emit_warning(c, bitcast(stmt->getBeginLoc()), "TODO handle C ObjCBridgedCastExprClass");
             return ErrorUnexpected;
-        case clang::Stmt::CharacterLiteralClass:
+        case ZigClangStmt_CharacterLiteralClass:
             emit_warning(c, bitcast(stmt->getBeginLoc()), "TODO handle C CharacterLiteralClass");
             return ErrorUnexpected;
-        case clang::Stmt::ChooseExprClass:
+        case ZigClangStmt_ChooseExprClass:
             emit_warning(c, bitcast(stmt->getBeginLoc()), "TODO handle C ChooseExprClass");
             return ErrorUnexpected;
-        case clang::Stmt::CompoundLiteralExprClass:
+        case ZigClangStmt_CompoundLiteralExprClass:
             emit_warning(c, bitcast(stmt->getBeginLoc()), "TODO handle C CompoundLiteralExprClass");
             return ErrorUnexpected;
-        case clang::Stmt::ConvertVectorExprClass:
+        case ZigClangStmt_ConvertVectorExprClass:
             emit_warning(c, bitcast(stmt->getBeginLoc()), "TODO handle C ConvertVectorExprClass");
             return ErrorUnexpected;
-        case clang::Stmt::CoawaitExprClass:
+        case ZigClangStmt_CoawaitExprClass:
             emit_warning(c, bitcast(stmt->getBeginLoc()), "TODO handle C CoawaitExprClass");
             return ErrorUnexpected;
-        case clang::Stmt::CoyieldExprClass:
+        case ZigClangStmt_CoyieldExprClass:
             emit_warning(c, bitcast(stmt->getBeginLoc()), "TODO handle C CoyieldExprClass");
             return ErrorUnexpected;
-        case clang::Stmt::DependentCoawaitExprClass:
+        case ZigClangStmt_DependentCoawaitExprClass:
             emit_warning(c, bitcast(stmt->getBeginLoc()), "TODO handle C DependentCoawaitExprClass");
             return ErrorUnexpected;
-        case clang::Stmt::DependentScopeDeclRefExprClass:
+        case ZigClangStmt_DependentScopeDeclRefExprClass:
             emit_warning(c, bitcast(stmt->getBeginLoc()), "TODO handle C DependentScopeDeclRefExprClass");
             return ErrorUnexpected;
-        case clang::Stmt::DesignatedInitExprClass:
+        case ZigClangStmt_DesignatedInitExprClass:
             emit_warning(c, bitcast(stmt->getBeginLoc()), "TODO handle C DesignatedInitExprClass");
             return ErrorUnexpected;
-        case clang::Stmt::DesignatedInitUpdateExprClass:
+        case ZigClangStmt_DesignatedInitUpdateExprClass:
             emit_warning(c, bitcast(stmt->getBeginLoc()), "TODO handle C DesignatedInitUpdateExprClass");
             return ErrorUnexpected;
-        case clang::Stmt::ExpressionTraitExprClass:
+        case ZigClangStmt_ExpressionTraitExprClass:
             emit_warning(c, bitcast(stmt->getBeginLoc()), "TODO handle C ExpressionTraitExprClass");
             return ErrorUnexpected;
-        case clang::Stmt::ExtVectorElementExprClass:
+        case ZigClangStmt_ExtVectorElementExprClass:
             emit_warning(c, bitcast(stmt->getBeginLoc()), "TODO handle C ExtVectorElementExprClass");
             return ErrorUnexpected;
-        case clang::Stmt::FixedPointLiteralClass:
+        case ZigClangStmt_FixedPointLiteralClass:
             emit_warning(c, bitcast(stmt->getBeginLoc()), "TODO handle C FixedPointLiteralClass");
             return ErrorUnexpected;
-        case clang::Stmt::FloatingLiteralClass:
+        case ZigClangStmt_FloatingLiteralClass:
             emit_warning(c, bitcast(stmt->getBeginLoc()), "TODO handle C FloatingLiteralClass");
             return ErrorUnexpected;
-        case clang::Stmt::ExprWithCleanupsClass:
+        case ZigClangStmt_ExprWithCleanupsClass:
             emit_warning(c, bitcast(stmt->getBeginLoc()), "TODO handle C ExprWithCleanupsClass");
             return ErrorUnexpected;
-        case clang::Stmt::FunctionParmPackExprClass:
+        case ZigClangStmt_FunctionParmPackExprClass:
             emit_warning(c, bitcast(stmt->getBeginLoc()), "TODO handle C FunctionParmPackExprClass");
             return ErrorUnexpected;
-        case clang::Stmt::GNUNullExprClass:
+        case ZigClangStmt_GNUNullExprClass:
             emit_warning(c, bitcast(stmt->getBeginLoc()), "TODO handle C GNUNullExprClass");
             return ErrorUnexpected;
-        case clang::Stmt::GenericSelectionExprClass:
+        case ZigClangStmt_GenericSelectionExprClass:
             emit_warning(c, bitcast(stmt->getBeginLoc()), "TODO handle C GenericSelectionExprClass");
             return ErrorUnexpected;
-        case clang::Stmt::ImaginaryLiteralClass:
+        case ZigClangStmt_ImaginaryLiteralClass:
             emit_warning(c, bitcast(stmt->getBeginLoc()), "TODO handle C ImaginaryLiteralClass");
             return ErrorUnexpected;
-        case clang::Stmt::ImplicitValueInitExprClass:
+        case ZigClangStmt_ImplicitValueInitExprClass:
             emit_warning(c, bitcast(stmt->getBeginLoc()), "TODO handle C ImplicitValueInitExprClass");
             return ErrorUnexpected;
-        case clang::Stmt::InitListExprClass:
+        case ZigClangStmt_InitListExprClass:
             emit_warning(c, bitcast(stmt->getBeginLoc()), "TODO handle C InitListExprClass");
             return ErrorUnexpected;
-        case clang::Stmt::LambdaExprClass:
+        case ZigClangStmt_LambdaExprClass:
             emit_warning(c, bitcast(stmt->getBeginLoc()), "TODO handle C LambdaExprClass");
             return ErrorUnexpected;
-        case clang::Stmt::MSPropertyRefExprClass:
+        case ZigClangStmt_MSPropertyRefExprClass:
             emit_warning(c, bitcast(stmt->getBeginLoc()), "TODO handle C MSPropertyRefExprClass");
             return ErrorUnexpected;
-        case clang::Stmt::MSPropertySubscriptExprClass:
+        case ZigClangStmt_MSPropertySubscriptExprClass:
             emit_warning(c, bitcast(stmt->getBeginLoc()), "TODO handle C MSPropertySubscriptExprClass");
             return ErrorUnexpected;
-        case clang::Stmt::MaterializeTemporaryExprClass:
+        case ZigClangStmt_MaterializeTemporaryExprClass:
             emit_warning(c, bitcast(stmt->getBeginLoc()), "TODO handle C MaterializeTemporaryExprClass");
             return ErrorUnexpected;
-        case clang::Stmt::NoInitExprClass:
+        case ZigClangStmt_NoInitExprClass:
             emit_warning(c, bitcast(stmt->getBeginLoc()), "TODO handle C NoInitExprClass");
             return ErrorUnexpected;
-        case clang::Stmt::OMPArraySectionExprClass:
+        case ZigClangStmt_OMPArraySectionExprClass:
             emit_warning(c, bitcast(stmt->getBeginLoc()), "TODO handle C OMPArraySectionExprClass");
             return ErrorUnexpected;
-        case clang::Stmt::ObjCArrayLiteralClass:
+        case ZigClangStmt_ObjCArrayLiteralClass:
             emit_warning(c, bitcast(stmt->getBeginLoc()), "TODO handle C ObjCArrayLiteralClass");
             return ErrorUnexpected;
-        case clang::Stmt::ObjCAvailabilityCheckExprClass:
+        case ZigClangStmt_ObjCAvailabilityCheckExprClass:
             emit_warning(c, bitcast(stmt->getBeginLoc()), "TODO handle C ObjCAvailabilityCheckExprClass");
             return ErrorUnexpected;
-        case clang::Stmt::ObjCBoolLiteralExprClass:
+        case ZigClangStmt_ObjCBoolLiteralExprClass:
             emit_warning(c, bitcast(stmt->getBeginLoc()), "TODO handle C ObjCBoolLiteralExprClass");
             return ErrorUnexpected;
-        case clang::Stmt::ObjCBoxedExprClass:
+        case ZigClangStmt_ObjCBoxedExprClass:
             emit_warning(c, bitcast(stmt->getBeginLoc()), "TODO handle C ObjCBoxedExprClass");
             return ErrorUnexpected;
-        case clang::Stmt::ObjCDictionaryLiteralClass:
+        case ZigClangStmt_ObjCDictionaryLiteralClass:
             emit_warning(c, bitcast(stmt->getBeginLoc()), "TODO handle C ObjCDictionaryLiteralClass");
             return ErrorUnexpected;
-        case clang::Stmt::ObjCEncodeExprClass:
+        case ZigClangStmt_ObjCEncodeExprClass:
             emit_warning(c, bitcast(stmt->getBeginLoc()), "TODO handle C ObjCEncodeExprClass");
             return ErrorUnexpected;
-        case clang::Stmt::ObjCIndirectCopyRestoreExprClass:
+        case ZigClangStmt_ObjCIndirectCopyRestoreExprClass:
             emit_warning(c, bitcast(stmt->getBeginLoc()), "TODO handle C ObjCIndirectCopyRestoreExprClass");
             return ErrorUnexpected;
-        case clang::Stmt::ObjCIsaExprClass:
+        case ZigClangStmt_ObjCIsaExprClass:
             emit_warning(c, bitcast(stmt->getBeginLoc()), "TODO handle C ObjCIsaExprClass");
             return ErrorUnexpected;
-        case clang::Stmt::ObjCIvarRefExprClass:
+        case ZigClangStmt_ObjCIvarRefExprClass:
             emit_warning(c, bitcast(stmt->getBeginLoc()), "TODO handle C ObjCIvarRefExprClass");
             return ErrorUnexpected;
-        case clang::Stmt::ObjCMessageExprClass:
+        case ZigClangStmt_ObjCMessageExprClass:
             emit_warning(c, bitcast(stmt->getBeginLoc()), "TODO handle C ObjCMessageExprClass");
             return ErrorUnexpected;
-        case clang::Stmt::ObjCPropertyRefExprClass:
+        case ZigClangStmt_ObjCPropertyRefExprClass:
             emit_warning(c, bitcast(stmt->getBeginLoc()), "TODO handle C ObjCPropertyRefExprClass");
             return ErrorUnexpected;
-        case clang::Stmt::ObjCProtocolExprClass:
+        case ZigClangStmt_ObjCProtocolExprClass:
             emit_warning(c, bitcast(stmt->getBeginLoc()), "TODO handle C ObjCProtocolExprClass");
             return ErrorUnexpected;
-        case clang::Stmt::ObjCSelectorExprClass:
+        case ZigClangStmt_ObjCSelectorExprClass:
             emit_warning(c, bitcast(stmt->getBeginLoc()), "TODO handle C ObjCSelectorExprClass");
             return ErrorUnexpected;
-        case clang::Stmt::ObjCStringLiteralClass:
+        case ZigClangStmt_ObjCStringLiteralClass:
             emit_warning(c, bitcast(stmt->getBeginLoc()), "TODO handle C ObjCStringLiteralClass");
             return ErrorUnexpected;
-        case clang::Stmt::ObjCSubscriptRefExprClass:
+        case ZigClangStmt_ObjCSubscriptRefExprClass:
             emit_warning(c, bitcast(stmt->getBeginLoc()), "TODO handle C ObjCSubscriptRefExprClass");
             return ErrorUnexpected;
-        case clang::Stmt::OffsetOfExprClass:
+        case ZigClangStmt_OffsetOfExprClass:
             emit_warning(c, bitcast(stmt->getBeginLoc()), "TODO handle C OffsetOfExprClass");
             return ErrorUnexpected;
-        case clang::Stmt::OpaqueValueExprClass:
+        case ZigClangStmt_OpaqueValueExprClass:
             emit_warning(c, bitcast(stmt->getBeginLoc()), "TODO handle C OpaqueValueExprClass");
             return ErrorUnexpected;
-        case clang::Stmt::UnresolvedLookupExprClass:
+        case ZigClangStmt_UnresolvedLookupExprClass:
             emit_warning(c, bitcast(stmt->getBeginLoc()), "TODO handle C UnresolvedLookupExprClass");
             return ErrorUnexpected;
-        case clang::Stmt::UnresolvedMemberExprClass:
+        case ZigClangStmt_UnresolvedMemberExprClass:
             emit_warning(c, bitcast(stmt->getBeginLoc()), "TODO handle C UnresolvedMemberExprClass");
             return ErrorUnexpected;
-        case clang::Stmt::PackExpansionExprClass:
+        case ZigClangStmt_PackExpansionExprClass:
             emit_warning(c, bitcast(stmt->getBeginLoc()), "TODO handle C PackExpansionExprClass");
             return ErrorUnexpected;
-        case clang::Stmt::ParenListExprClass:
+        case ZigClangStmt_ParenListExprClass:
             emit_warning(c, bitcast(stmt->getBeginLoc()), "TODO handle C ParenListExprClass");
             return ErrorUnexpected;
-        case clang::Stmt::PseudoObjectExprClass:
+        case ZigClangStmt_PseudoObjectExprClass:
             emit_warning(c, bitcast(stmt->getBeginLoc()), "TODO handle C PseudoObjectExprClass");
             return ErrorUnexpected;
-        case clang::Stmt::ShuffleVectorExprClass:
+        case ZigClangStmt_ShuffleVectorExprClass:
             emit_warning(c, bitcast(stmt->getBeginLoc()), "TODO handle C ShuffleVectorExprClass");
             return ErrorUnexpected;
-        case clang::Stmt::SizeOfPackExprClass:
+        case ZigClangStmt_SizeOfPackExprClass:
             emit_warning(c, bitcast(stmt->getBeginLoc()), "TODO handle C SizeOfPackExprClass");
             return ErrorUnexpected;
-        case clang::Stmt::SubstNonTypeTemplateParmExprClass:
+        case ZigClangStmt_SubstNonTypeTemplateParmExprClass:
             emit_warning(c, bitcast(stmt->getBeginLoc()), "TODO handle C SubstNonTypeTemplateParmExprClass");
             return ErrorUnexpected;
-        case clang::Stmt::SubstNonTypeTemplateParmPackExprClass:
+        case ZigClangStmt_SubstNonTypeTemplateParmPackExprClass:
             emit_warning(c, bitcast(stmt->getBeginLoc()), "TODO handle C SubstNonTypeTemplateParmPackExprClass");
             return ErrorUnexpected;
-        case clang::Stmt::TypeTraitExprClass:
+        case ZigClangStmt_TypeTraitExprClass:
             emit_warning(c, bitcast(stmt->getBeginLoc()), "TODO handle C TypeTraitExprClass");
             return ErrorUnexpected;
-        case clang::Stmt::TypoExprClass:
+        case ZigClangStmt_TypoExprClass:
             emit_warning(c, bitcast(stmt->getBeginLoc()), "TODO handle C TypoExprClass");
             return ErrorUnexpected;
-        case clang::Stmt::VAArgExprClass:
+        case ZigClangStmt_VAArgExprClass:
             emit_warning(c, bitcast(stmt->getBeginLoc()), "TODO handle C VAArgExprClass");
             return ErrorUnexpected;
-        case clang::Stmt::GotoStmtClass:
+        case ZigClangStmt_GotoStmtClass:
             emit_warning(c, bitcast(stmt->getBeginLoc()), "TODO handle C GotoStmtClass");
             return ErrorUnexpected;
-        case clang::Stmt::IndirectGotoStmtClass:
+        case ZigClangStmt_IndirectGotoStmtClass:
             emit_warning(c, bitcast(stmt->getBeginLoc()), "TODO handle C IndirectGotoStmtClass");
             return ErrorUnexpected;
-        case clang::Stmt::LabelStmtClass:
+        case ZigClangStmt_LabelStmtClass:
             emit_warning(c, bitcast(stmt->getBeginLoc()), "TODO handle C LabelStmtClass");
             return ErrorUnexpected;
-        case clang::Stmt::MSDependentExistsStmtClass:
+        case ZigClangStmt_MSDependentExistsStmtClass:
             emit_warning(c, bitcast(stmt->getBeginLoc()), "TODO handle C MSDependentExistsStmtClass");
             return ErrorUnexpected;
-        case clang::Stmt::OMPAtomicDirectiveClass:
+        case ZigClangStmt_OMPAtomicDirectiveClass:
             emit_warning(c, bitcast(stmt->getBeginLoc()), "TODO handle C OMPAtomicDirectiveClass");
             return ErrorUnexpected;
-        case clang::Stmt::OMPBarrierDirectiveClass:
+        case ZigClangStmt_OMPBarrierDirectiveClass:
             emit_warning(c, bitcast(stmt->getBeginLoc()), "TODO handle C OMPBarrierDirectiveClass");
             return ErrorUnexpected;
-        case clang::Stmt::OMPCancelDirectiveClass:
+        case ZigClangStmt_OMPCancelDirectiveClass:
             emit_warning(c, bitcast(stmt->getBeginLoc()), "TODO handle C OMPCancelDirectiveClass");
             return ErrorUnexpected;
-        case clang::Stmt::OMPCancellationPointDirectiveClass:
+        case ZigClangStmt_OMPCancellationPointDirectiveClass:
             emit_warning(c, bitcast(stmt->getBeginLoc()), "TODO handle C OMPCancellationPointDirectiveClass");
             return ErrorUnexpected;
-        case clang::Stmt::OMPCriticalDirectiveClass:
+        case ZigClangStmt_OMPCriticalDirectiveClass:
             emit_warning(c, bitcast(stmt->getBeginLoc()), "TODO handle C OMPCriticalDirectiveClass");
             return ErrorUnexpected;
-        case clang::Stmt::OMPFlushDirectiveClass:
+        case ZigClangStmt_OMPFlushDirectiveClass:
             emit_warning(c, bitcast(stmt->getBeginLoc()), "TODO handle C OMPFlushDirectiveClass");
             return ErrorUnexpected;
-        case clang::Stmt::OMPDistributeDirectiveClass:
+        case ZigClangStmt_OMPDistributeDirectiveClass:
             emit_warning(c, bitcast(stmt->getBeginLoc()), "TODO handle C OMPDistributeDirectiveClass");
             return ErrorUnexpected;
-        case clang::Stmt::OMPDistributeParallelForDirectiveClass:
+        case ZigClangStmt_OMPDistributeParallelForDirectiveClass:
             emit_warning(c, bitcast(stmt->getBeginLoc()), "TODO handle C OMPDistributeParallelForDirectiveClass");
             return ErrorUnexpected;
-        case clang::Stmt::OMPDistributeParallelForSimdDirectiveClass:
+        case ZigClangStmt_OMPDistributeParallelForSimdDirectiveClass:
             emit_warning(c, bitcast(stmt->getBeginLoc()), "TODO handle C OMPDistributeParallelForSimdDirectiveClass");
             return ErrorUnexpected;
-        case clang::Stmt::OMPDistributeSimdDirectiveClass:
+        case ZigClangStmt_OMPDistributeSimdDirectiveClass:
             emit_warning(c, bitcast(stmt->getBeginLoc()), "TODO handle C OMPDistributeSimdDirectiveClass");
             return ErrorUnexpected;
-        case clang::Stmt::OMPForDirectiveClass:
+        case ZigClangStmt_OMPForDirectiveClass:
             emit_warning(c, bitcast(stmt->getBeginLoc()), "TODO handle C OMPForDirectiveClass");
             return ErrorUnexpected;
-        case clang::Stmt::OMPForSimdDirectiveClass:
+        case ZigClangStmt_OMPForSimdDirectiveClass:
             emit_warning(c, bitcast(stmt->getBeginLoc()), "TODO handle C OMPForSimdDirectiveClass");
             return ErrorUnexpected;
-        case clang::Stmt::OMPParallelForDirectiveClass:
+        case ZigClangStmt_OMPParallelForDirectiveClass:
             emit_warning(c, bitcast(stmt->getBeginLoc()), "TODO handle C OMPParallelForDirectiveClass");
             return ErrorUnexpected;
-        case clang::Stmt::OMPParallelForSimdDirectiveClass:
+        case ZigClangStmt_OMPParallelForSimdDirectiveClass:
             emit_warning(c, bitcast(stmt->getBeginLoc()), "TODO handle C OMPParallelForSimdDirectiveClass");
             return ErrorUnexpected;
-        case clang::Stmt::OMPSimdDirectiveClass:
+        case ZigClangStmt_OMPSimdDirectiveClass:
             emit_warning(c, bitcast(stmt->getBeginLoc()), "TODO handle C OMPSimdDirectiveClass");
             return ErrorUnexpected;
-        case clang::Stmt::OMPTargetParallelForSimdDirectiveClass:
+        case ZigClangStmt_OMPTargetParallelForSimdDirectiveClass:
             emit_warning(c, bitcast(stmt->getBeginLoc()), "TODO handle C OMPTargetParallelForSimdDirectiveClass");
             return ErrorUnexpected;
-        case clang::Stmt::OMPTargetSimdDirectiveClass:
+        case ZigClangStmt_OMPTargetSimdDirectiveClass:
             emit_warning(c, bitcast(stmt->getBeginLoc()), "TODO handle C OMPTargetSimdDirectiveClass");
             return ErrorUnexpected;
-        case clang::Stmt::OMPTargetTeamsDistributeDirectiveClass:
+        case ZigClangStmt_OMPTargetTeamsDistributeDirectiveClass:
             emit_warning(c, bitcast(stmt->getBeginLoc()), "TODO handle C OMPTargetTeamsDistributeDirectiveClass");
             return ErrorUnexpected;
-        case clang::Stmt::OMPTargetTeamsDistributeParallelForDirectiveClass:
+        case ZigClangStmt_OMPTargetTeamsDistributeParallelForDirectiveClass:
             emit_warning(c, bitcast(stmt->getBeginLoc()), "TODO handle C OMPTargetTeamsDistributeParallelForDirectiveClass");
             return ErrorUnexpected;
-        case clang::Stmt::OMPTargetTeamsDistributeParallelForSimdDirectiveClass:
+        case ZigClangStmt_OMPTargetTeamsDistributeParallelForSimdDirectiveClass:
             emit_warning(c, bitcast(stmt->getBeginLoc()), "TODO handle C OMPTargetTeamsDistributeParallelForSimdDirectiveClass");
             return ErrorUnexpected;
-        case clang::Stmt::OMPTargetTeamsDistributeSimdDirectiveClass:
+        case ZigClangStmt_OMPTargetTeamsDistributeSimdDirectiveClass:
             emit_warning(c, bitcast(stmt->getBeginLoc()), "TODO handle C OMPTargetTeamsDistributeSimdDirectiveClass");
             return ErrorUnexpected;
-        case clang::Stmt::OMPTaskLoopDirectiveClass:
+        case ZigClangStmt_OMPTaskLoopDirectiveClass:
             emit_warning(c, bitcast(stmt->getBeginLoc()), "TODO handle C OMPTaskLoopDirectiveClass");
             return ErrorUnexpected;
-        case clang::Stmt::OMPTaskLoopSimdDirectiveClass:
+        case ZigClangStmt_OMPTaskLoopSimdDirectiveClass:
             emit_warning(c, bitcast(stmt->getBeginLoc()), "TODO handle C OMPTaskLoopSimdDirectiveClass");
             return ErrorUnexpected;
-        case clang::Stmt::OMPTeamsDistributeDirectiveClass:
+        case ZigClangStmt_OMPTeamsDistributeDirectiveClass:
             emit_warning(c, bitcast(stmt->getBeginLoc()), "TODO handle C OMPTeamsDistributeDirectiveClass");
             return ErrorUnexpected;
-        case clang::Stmt::OMPTeamsDistributeParallelForDirectiveClass:
+        case ZigClangStmt_OMPTeamsDistributeParallelForDirectiveClass:
             emit_warning(c, bitcast(stmt->getBeginLoc()), "TODO handle C OMPTeamsDistributeParallelForDirectiveClass");
             return ErrorUnexpected;
-        case clang::Stmt::OMPTeamsDistributeParallelForSimdDirectiveClass:
+        case ZigClangStmt_OMPTeamsDistributeParallelForSimdDirectiveClass:
             emit_warning(c, bitcast(stmt->getBeginLoc()), "TODO handle C OMPTeamsDistributeParallelForSimdDirectiveClass");
             return ErrorUnexpected;
-        case clang::Stmt::OMPTeamsDistributeSimdDirectiveClass:
+        case ZigClangStmt_OMPTeamsDistributeSimdDirectiveClass:
             emit_warning(c, bitcast(stmt->getBeginLoc()), "TODO handle C OMPTeamsDistributeSimdDirectiveClass");
             return ErrorUnexpected;
-        case clang::Stmt::OMPMasterDirectiveClass:
+        case ZigClangStmt_OMPMasterDirectiveClass:
             emit_warning(c, bitcast(stmt->getBeginLoc()), "TODO handle C OMPMasterDirectiveClass");
             return ErrorUnexpected;
-        case clang::Stmt::OMPOrderedDirectiveClass:
+        case ZigClangStmt_OMPOrderedDirectiveClass:
             emit_warning(c, bitcast(stmt->getBeginLoc()), "TODO handle C OMPOrderedDirectiveClass");
             return ErrorUnexpected;
-        case clang::Stmt::OMPParallelDirectiveClass:
+        case ZigClangStmt_OMPParallelDirectiveClass:
             emit_warning(c, bitcast(stmt->getBeginLoc()), "TODO handle C OMPParallelDirectiveClass");
             return ErrorUnexpected;
-        case clang::Stmt::OMPParallelSectionsDirectiveClass:
+        case ZigClangStmt_OMPParallelSectionsDirectiveClass:
             emit_warning(c, bitcast(stmt->getBeginLoc()), "TODO handle C OMPParallelSectionsDirectiveClass");
             return ErrorUnexpected;
-        case clang::Stmt::OMPSectionDirectiveClass:
+        case ZigClangStmt_OMPSectionDirectiveClass:
             emit_warning(c, bitcast(stmt->getBeginLoc()), "TODO handle C OMPSectionDirectiveClass");
             return ErrorUnexpected;
-        case clang::Stmt::OMPSectionsDirectiveClass:
+        case ZigClangStmt_OMPSectionsDirectiveClass:
             emit_warning(c, bitcast(stmt->getBeginLoc()), "TODO handle C OMPSectionsDirectiveClass");
             return ErrorUnexpected;
-        case clang::Stmt::OMPSingleDirectiveClass:
+        case ZigClangStmt_OMPSingleDirectiveClass:
             emit_warning(c, bitcast(stmt->getBeginLoc()), "TODO handle C OMPSingleDirectiveClass");
             return ErrorUnexpected;
-        case clang::Stmt::OMPTargetDataDirectiveClass:
+        case ZigClangStmt_OMPTargetDataDirectiveClass:
             emit_warning(c, bitcast(stmt->getBeginLoc()), "TODO handle C OMPTargetDataDirectiveClass");
             return ErrorUnexpected;
-        case clang::Stmt::OMPTargetDirectiveClass:
+        case ZigClangStmt_OMPTargetDirectiveClass:
             emit_warning(c, bitcast(stmt->getBeginLoc()), "TODO handle C OMPTargetDirectiveClass");
             return ErrorUnexpected;
-        case clang::Stmt::OMPTargetEnterDataDirectiveClass:
+        case ZigClangStmt_OMPTargetEnterDataDirectiveClass:
             emit_warning(c, bitcast(stmt->getBeginLoc()), "TODO handle C OMPTargetEnterDataDirectiveClass");
             return ErrorUnexpected;
-        case clang::Stmt::OMPTargetExitDataDirectiveClass:
+        case ZigClangStmt_OMPTargetExitDataDirectiveClass:
             emit_warning(c, bitcast(stmt->getBeginLoc()), "TODO handle C OMPTargetExitDataDirectiveClass");
             return ErrorUnexpected;
-        case clang::Stmt::OMPTargetParallelDirectiveClass:
+        case ZigClangStmt_OMPTargetParallelDirectiveClass:
             emit_warning(c, bitcast(stmt->getBeginLoc()), "TODO handle C OMPTargetParallelDirectiveClass");
             return ErrorUnexpected;
-        case clang::Stmt::OMPTargetParallelForDirectiveClass:
+        case ZigClangStmt_OMPTargetParallelForDirectiveClass:
             emit_warning(c, bitcast(stmt->getBeginLoc()), "TODO handle C OMPTargetParallelForDirectiveClass");
             return ErrorUnexpected;
-        case clang::Stmt::OMPTargetTeamsDirectiveClass:
+        case ZigClangStmt_OMPTargetTeamsDirectiveClass:
             emit_warning(c, bitcast(stmt->getBeginLoc()), "TODO handle C OMPTargetTeamsDirectiveClass");
             return ErrorUnexpected;
-        case clang::Stmt::OMPTargetUpdateDirectiveClass:
+        case ZigClangStmt_OMPTargetUpdateDirectiveClass:
             emit_warning(c, bitcast(stmt->getBeginLoc()), "TODO handle C OMPTargetUpdateDirectiveClass");
             return ErrorUnexpected;
-        case clang::Stmt::OMPTaskDirectiveClass:
+        case ZigClangStmt_OMPTaskDirectiveClass:
             emit_warning(c, bitcast(stmt->getBeginLoc()), "TODO handle C OMPTaskDirectiveClass");
             return ErrorUnexpected;
-        case clang::Stmt::OMPTaskgroupDirectiveClass:
+        case ZigClangStmt_OMPTaskgroupDirectiveClass:
             emit_warning(c, bitcast(stmt->getBeginLoc()), "TODO handle C OMPTaskgroupDirectiveClass");
             return ErrorUnexpected;
-        case clang::Stmt::OMPTaskwaitDirectiveClass:
+        case ZigClangStmt_OMPTaskwaitDirectiveClass:
             emit_warning(c, bitcast(stmt->getBeginLoc()), "TODO handle C OMPTaskwaitDirectiveClass");
             return ErrorUnexpected;
-        case clang::Stmt::OMPTaskyieldDirectiveClass:
+        case ZigClangStmt_OMPTaskyieldDirectiveClass:
             emit_warning(c, bitcast(stmt->getBeginLoc()), "TODO handle C OMPTaskyieldDirectiveClass");
             return ErrorUnexpected;
-        case clang::Stmt::OMPTeamsDirectiveClass:
+        case ZigClangStmt_OMPTeamsDirectiveClass:
             emit_warning(c, bitcast(stmt->getBeginLoc()), "TODO handle C OMPTeamsDirectiveClass");
             return ErrorUnexpected;
-        case clang::Stmt::ObjCAtCatchStmtClass:
+        case ZigClangStmt_ObjCAtCatchStmtClass:
             emit_warning(c, bitcast(stmt->getBeginLoc()), "TODO handle C ObjCAtCatchStmtClass");
             return ErrorUnexpected;
-        case clang::Stmt::ObjCAtFinallyStmtClass:
+        case ZigClangStmt_ObjCAtFinallyStmtClass:
             emit_warning(c, bitcast(stmt->getBeginLoc()), "TODO handle C ObjCAtFinallyStmtClass");
             return ErrorUnexpected;
-        case clang::Stmt::ObjCAtSynchronizedStmtClass:
+        case ZigClangStmt_ObjCAtSynchronizedStmtClass:
             emit_warning(c, bitcast(stmt->getBeginLoc()), "TODO handle C ObjCAtSynchronizedStmtClass");
             return ErrorUnexpected;
-        case clang::Stmt::ObjCAtThrowStmtClass:
+        case ZigClangStmt_ObjCAtThrowStmtClass:
             emit_warning(c, bitcast(stmt->getBeginLoc()), "TODO handle C ObjCAtThrowStmtClass");
             return ErrorUnexpected;
-        case clang::Stmt::ObjCAtTryStmtClass:
+        case ZigClangStmt_ObjCAtTryStmtClass:
             emit_warning(c, bitcast(stmt->getBeginLoc()), "TODO handle C ObjCAtTryStmtClass");
             return ErrorUnexpected;
-        case clang::Stmt::ObjCAutoreleasePoolStmtClass:
+        case ZigClangStmt_ObjCAutoreleasePoolStmtClass:
             emit_warning(c, bitcast(stmt->getBeginLoc()), "TODO handle C ObjCAutoreleasePoolStmtClass");
             return ErrorUnexpected;
-        case clang::Stmt::ObjCForCollectionStmtClass:
+        case ZigClangStmt_ObjCForCollectionStmtClass:
             emit_warning(c, bitcast(stmt->getBeginLoc()), "TODO handle C ObjCForCollectionStmtClass");
             return ErrorUnexpected;
-        case clang::Stmt::SEHExceptStmtClass:
+        case ZigClangStmt_SEHExceptStmtClass:
             emit_warning(c, bitcast(stmt->getBeginLoc()), "TODO handle C SEHExceptStmtClass");
             return ErrorUnexpected;
-        case clang::Stmt::SEHFinallyStmtClass:
+        case ZigClangStmt_SEHFinallyStmtClass:
             emit_warning(c, bitcast(stmt->getBeginLoc()), "TODO handle C SEHFinallyStmtClass");
             return ErrorUnexpected;
-        case clang::Stmt::SEHLeaveStmtClass:
+        case ZigClangStmt_SEHLeaveStmtClass:
             emit_warning(c, bitcast(stmt->getBeginLoc()), "TODO handle C SEHLeaveStmtClass");
             return ErrorUnexpected;
-        case clang::Stmt::SEHTryStmtClass:
+        case ZigClangStmt_SEHTryStmtClass:
             emit_warning(c, bitcast(stmt->getBeginLoc()), "TODO handle C SEHTryStmtClass");
             return ErrorUnexpected;
     }
src/zig_clang.cpp
@@ -101,7 +101,7 @@ static_assert((clang::BinaryOperatorKind)ZigClangBO_SubAssign == clang::BO_SubAs
 static_assert((clang::BinaryOperatorKind)ZigClangBO_Xor == clang::BO_Xor, "");
 static_assert((clang::BinaryOperatorKind)ZigClangBO_XorAssign == clang::BO_XorAssign, "");
 
-// This function detects additions to the enum
+// Detect additions to the enum
 void zig2clang_UO(clang::UnaryOperatorKind op) {
     switch (op) {
         case clang::UO_AddrOf:
@@ -137,6 +137,7 @@ static_assert((clang::UnaryOperatorKind)ZigClangUO_PreDec == clang::UO_PreDec, "
 static_assert((clang::UnaryOperatorKind)ZigClangUO_PreInc == clang::UO_PreInc, "");
 static_assert((clang::UnaryOperatorKind)ZigClangUO_Real == clang::UO_Real, "");
 
+// Detect additions to the enum
 void zig2clang_TypeClass(clang::Type::TypeClass ty) {
     switch (ty) {
         case clang::Type::Builtin:
@@ -238,6 +239,408 @@ static_assert((clang::Type::TypeClass)ZigClangType_ObjCObjectPointer == clang::T
 static_assert((clang::Type::TypeClass)ZigClangType_Pipe == clang::Type::Pipe, "");
 static_assert((clang::Type::TypeClass)ZigClangType_Atomic == clang::Type::Atomic, "");
 
+// Detect additions to the enum
+void zig2clang_StmtClass(clang::Stmt::StmtClass x) {
+    switch (x) {
+        case clang::Stmt::NoStmtClass:
+        case clang::Stmt::NullStmtClass:
+        case clang::Stmt::CompoundStmtClass:
+        case clang::Stmt::LabelStmtClass:
+        case clang::Stmt::AttributedStmtClass:
+        case clang::Stmt::IfStmtClass:
+        case clang::Stmt::SwitchStmtClass:
+        case clang::Stmt::WhileStmtClass:
+        case clang::Stmt::DoStmtClass:
+        case clang::Stmt::ForStmtClass:
+        case clang::Stmt::GotoStmtClass:
+        case clang::Stmt::IndirectGotoStmtClass:
+        case clang::Stmt::ContinueStmtClass:
+        case clang::Stmt::BreakStmtClass:
+        case clang::Stmt::ReturnStmtClass:
+        case clang::Stmt::DeclStmtClass:
+        case clang::Stmt::CaseStmtClass:
+        case clang::Stmt::DefaultStmtClass:
+        case clang::Stmt::CapturedStmtClass:
+        case clang::Stmt::GCCAsmStmtClass:
+        case clang::Stmt::MSAsmStmtClass:
+        case clang::Stmt::ObjCAtTryStmtClass:
+        case clang::Stmt::ObjCAtCatchStmtClass:
+        case clang::Stmt::ObjCAtFinallyStmtClass:
+        case clang::Stmt::ObjCAtThrowStmtClass:
+        case clang::Stmt::ObjCAtSynchronizedStmtClass:
+        case clang::Stmt::ObjCForCollectionStmtClass:
+        case clang::Stmt::ObjCAutoreleasePoolStmtClass:
+        case clang::Stmt::CXXCatchStmtClass:
+        case clang::Stmt::CXXTryStmtClass:
+        case clang::Stmt::CXXForRangeStmtClass:
+        case clang::Stmt::CoroutineBodyStmtClass:
+        case clang::Stmt::CoreturnStmtClass:
+        case clang::Stmt::PredefinedExprClass:
+        case clang::Stmt::DeclRefExprClass:
+        case clang::Stmt::IntegerLiteralClass:
+        case clang::Stmt::FixedPointLiteralClass:
+        case clang::Stmt::FloatingLiteralClass:
+        case clang::Stmt::ImaginaryLiteralClass:
+        case clang::Stmt::StringLiteralClass:
+        case clang::Stmt::CharacterLiteralClass:
+        case clang::Stmt::ParenExprClass:
+        case clang::Stmt::UnaryOperatorClass:
+        case clang::Stmt::OffsetOfExprClass:
+        case clang::Stmt::UnaryExprOrTypeTraitExprClass:
+        case clang::Stmt::ArraySubscriptExprClass:
+        case clang::Stmt::OMPArraySectionExprClass:
+        case clang::Stmt::CallExprClass:
+        case clang::Stmt::MemberExprClass:
+        case clang::Stmt::BinaryOperatorClass:
+        case clang::Stmt::CompoundAssignOperatorClass:
+        case clang::Stmt::ConditionalOperatorClass:
+        case clang::Stmt::BinaryConditionalOperatorClass:
+        case clang::Stmt::ImplicitCastExprClass:
+        case clang::Stmt::CStyleCastExprClass:
+        case clang::Stmt::CompoundLiteralExprClass:
+        case clang::Stmt::ExtVectorElementExprClass:
+        case clang::Stmt::InitListExprClass:
+        case clang::Stmt::DesignatedInitExprClass:
+        case clang::Stmt::DesignatedInitUpdateExprClass:
+        case clang::Stmt::ImplicitValueInitExprClass:
+        case clang::Stmt::NoInitExprClass:
+        case clang::Stmt::ArrayInitLoopExprClass:
+        case clang::Stmt::ArrayInitIndexExprClass:
+        case clang::Stmt::ParenListExprClass:
+        case clang::Stmt::VAArgExprClass:
+        case clang::Stmt::GenericSelectionExprClass:
+        case clang::Stmt::PseudoObjectExprClass:
+        case clang::Stmt::ConstantExprClass:
+        case clang::Stmt::AtomicExprClass:
+        case clang::Stmt::AddrLabelExprClass:
+        case clang::Stmt::StmtExprClass:
+        case clang::Stmt::ChooseExprClass:
+        case clang::Stmt::GNUNullExprClass:
+        case clang::Stmt::CXXOperatorCallExprClass:
+        case clang::Stmt::CXXMemberCallExprClass:
+        case clang::Stmt::CXXStaticCastExprClass:
+        case clang::Stmt::CXXDynamicCastExprClass:
+        case clang::Stmt::CXXReinterpretCastExprClass:
+        case clang::Stmt::CXXConstCastExprClass:
+        case clang::Stmt::CXXFunctionalCastExprClass:
+        case clang::Stmt::CXXTypeidExprClass:
+        case clang::Stmt::UserDefinedLiteralClass:
+        case clang::Stmt::CXXBoolLiteralExprClass:
+        case clang::Stmt::CXXNullPtrLiteralExprClass:
+        case clang::Stmt::CXXThisExprClass:
+        case clang::Stmt::CXXThrowExprClass:
+        case clang::Stmt::CXXDefaultArgExprClass:
+        case clang::Stmt::CXXDefaultInitExprClass:
+        case clang::Stmt::CXXScalarValueInitExprClass:
+        case clang::Stmt::CXXStdInitializerListExprClass:
+        case clang::Stmt::CXXNewExprClass:
+        case clang::Stmt::CXXDeleteExprClass:
+        case clang::Stmt::CXXPseudoDestructorExprClass:
+        case clang::Stmt::TypeTraitExprClass:
+        case clang::Stmt::ArrayTypeTraitExprClass:
+        case clang::Stmt::ExpressionTraitExprClass:
+        case clang::Stmt::DependentScopeDeclRefExprClass:
+        case clang::Stmt::CXXConstructExprClass:
+        case clang::Stmt::CXXInheritedCtorInitExprClass:
+        case clang::Stmt::CXXBindTemporaryExprClass:
+        case clang::Stmt::ExprWithCleanupsClass:
+        case clang::Stmt::CXXTemporaryObjectExprClass:
+        case clang::Stmt::CXXUnresolvedConstructExprClass:
+        case clang::Stmt::CXXDependentScopeMemberExprClass:
+        case clang::Stmt::UnresolvedLookupExprClass:
+        case clang::Stmt::UnresolvedMemberExprClass:
+        case clang::Stmt::CXXNoexceptExprClass:
+        case clang::Stmt::PackExpansionExprClass:
+        case clang::Stmt::SizeOfPackExprClass:
+        case clang::Stmt::SubstNonTypeTemplateParmExprClass:
+        case clang::Stmt::SubstNonTypeTemplateParmPackExprClass:
+        case clang::Stmt::FunctionParmPackExprClass:
+        case clang::Stmt::MaterializeTemporaryExprClass:
+        case clang::Stmt::LambdaExprClass:
+        case clang::Stmt::CXXFoldExprClass:
+        case clang::Stmt::CoawaitExprClass:
+        case clang::Stmt::DependentCoawaitExprClass:
+        case clang::Stmt::CoyieldExprClass:
+        case clang::Stmt::ObjCStringLiteralClass:
+        case clang::Stmt::ObjCBoxedExprClass:
+        case clang::Stmt::ObjCArrayLiteralClass:
+        case clang::Stmt::ObjCDictionaryLiteralClass:
+        case clang::Stmt::ObjCEncodeExprClass:
+        case clang::Stmt::ObjCMessageExprClass:
+        case clang::Stmt::ObjCSelectorExprClass:
+        case clang::Stmt::ObjCProtocolExprClass:
+        case clang::Stmt::ObjCIvarRefExprClass:
+        case clang::Stmt::ObjCPropertyRefExprClass:
+        case clang::Stmt::ObjCIsaExprClass:
+        case clang::Stmt::ObjCIndirectCopyRestoreExprClass:
+        case clang::Stmt::ObjCBoolLiteralExprClass:
+        case clang::Stmt::ObjCSubscriptRefExprClass:
+        case clang::Stmt::ObjCAvailabilityCheckExprClass:
+        case clang::Stmt::ObjCBridgedCastExprClass:
+        case clang::Stmt::CUDAKernelCallExprClass:
+        case clang::Stmt::ShuffleVectorExprClass:
+        case clang::Stmt::ConvertVectorExprClass:
+        case clang::Stmt::BlockExprClass:
+        case clang::Stmt::OpaqueValueExprClass:
+        case clang::Stmt::TypoExprClass:
+        case clang::Stmt::MSPropertyRefExprClass:
+        case clang::Stmt::MSPropertySubscriptExprClass:
+        case clang::Stmt::CXXUuidofExprClass:
+        case clang::Stmt::SEHTryStmtClass:
+        case clang::Stmt::SEHExceptStmtClass:
+        case clang::Stmt::SEHFinallyStmtClass:
+        case clang::Stmt::SEHLeaveStmtClass:
+        case clang::Stmt::MSDependentExistsStmtClass:
+        case clang::Stmt::AsTypeExprClass:
+        case clang::Stmt::OMPParallelDirectiveClass:
+        case clang::Stmt::OMPSimdDirectiveClass:
+        case clang::Stmt::OMPForDirectiveClass:
+        case clang::Stmt::OMPForSimdDirectiveClass:
+        case clang::Stmt::OMPSectionsDirectiveClass:
+        case clang::Stmt::OMPSectionDirectiveClass:
+        case clang::Stmt::OMPSingleDirectiveClass:
+        case clang::Stmt::OMPMasterDirectiveClass:
+        case clang::Stmt::OMPCriticalDirectiveClass:
+        case clang::Stmt::OMPParallelForDirectiveClass:
+        case clang::Stmt::OMPParallelForSimdDirectiveClass:
+        case clang::Stmt::OMPParallelSectionsDirectiveClass:
+        case clang::Stmt::OMPTaskDirectiveClass:
+        case clang::Stmt::OMPTaskyieldDirectiveClass:
+        case clang::Stmt::OMPBarrierDirectiveClass:
+        case clang::Stmt::OMPTaskwaitDirectiveClass:
+        case clang::Stmt::OMPTaskgroupDirectiveClass:
+        case clang::Stmt::OMPFlushDirectiveClass:
+        case clang::Stmt::OMPOrderedDirectiveClass:
+        case clang::Stmt::OMPAtomicDirectiveClass:
+        case clang::Stmt::OMPTargetDirectiveClass:
+        case clang::Stmt::OMPTargetDataDirectiveClass:
+        case clang::Stmt::OMPTargetEnterDataDirectiveClass:
+        case clang::Stmt::OMPTargetExitDataDirectiveClass:
+        case clang::Stmt::OMPTargetParallelDirectiveClass:
+        case clang::Stmt::OMPTargetParallelForDirectiveClass:
+        case clang::Stmt::OMPTargetUpdateDirectiveClass:
+        case clang::Stmt::OMPTeamsDirectiveClass:
+        case clang::Stmt::OMPCancellationPointDirectiveClass:
+        case clang::Stmt::OMPCancelDirectiveClass:
+        case clang::Stmt::OMPTaskLoopDirectiveClass:
+        case clang::Stmt::OMPTaskLoopSimdDirectiveClass:
+        case clang::Stmt::OMPDistributeDirectiveClass:
+        case clang::Stmt::OMPDistributeParallelForDirectiveClass:
+        case clang::Stmt::OMPDistributeParallelForSimdDirectiveClass:
+        case clang::Stmt::OMPDistributeSimdDirectiveClass:
+        case clang::Stmt::OMPTargetParallelForSimdDirectiveClass:
+        case clang::Stmt::OMPTargetSimdDirectiveClass:
+        case clang::Stmt::OMPTeamsDistributeDirectiveClass:
+        case clang::Stmt::OMPTeamsDistributeSimdDirectiveClass:
+        case clang::Stmt::OMPTeamsDistributeParallelForSimdDirectiveClass:
+        case clang::Stmt::OMPTeamsDistributeParallelForDirectiveClass:
+        case clang::Stmt::OMPTargetTeamsDirectiveClass:
+        case clang::Stmt::OMPTargetTeamsDistributeDirectiveClass:
+        case clang::Stmt::OMPTargetTeamsDistributeParallelForDirectiveClass:
+        case clang::Stmt::OMPTargetTeamsDistributeParallelForSimdDirectiveClass:
+        case clang::Stmt::OMPTargetTeamsDistributeSimdDirectiveClass:
+            break;
+    }
+}
+
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_NoStmtClass == clang::Stmt::NoStmtClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_NullStmtClass == clang::Stmt::NullStmtClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_CompoundStmtClass == clang::Stmt::CompoundStmtClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_LabelStmtClass == clang::Stmt::LabelStmtClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_AttributedStmtClass == clang::Stmt::AttributedStmtClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_IfStmtClass == clang::Stmt::IfStmtClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_SwitchStmtClass == clang::Stmt::SwitchStmtClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_WhileStmtClass == clang::Stmt::WhileStmtClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_DoStmtClass == clang::Stmt::DoStmtClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_ForStmtClass == clang::Stmt::ForStmtClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_GotoStmtClass == clang::Stmt::GotoStmtClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_IndirectGotoStmtClass == clang::Stmt::IndirectGotoStmtClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_ContinueStmtClass == clang::Stmt::ContinueStmtClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_BreakStmtClass == clang::Stmt::BreakStmtClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_ReturnStmtClass == clang::Stmt::ReturnStmtClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_DeclStmtClass == clang::Stmt::DeclStmtClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_CaseStmtClass == clang::Stmt::CaseStmtClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_DefaultStmtClass == clang::Stmt::DefaultStmtClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_CapturedStmtClass == clang::Stmt::CapturedStmtClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_GCCAsmStmtClass == clang::Stmt::GCCAsmStmtClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_MSAsmStmtClass == clang::Stmt::MSAsmStmtClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_ObjCAtTryStmtClass == clang::Stmt::ObjCAtTryStmtClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_ObjCAtCatchStmtClass == clang::Stmt::ObjCAtCatchStmtClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_ObjCAtFinallyStmtClass == clang::Stmt::ObjCAtFinallyStmtClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_ObjCAtThrowStmtClass == clang::Stmt::ObjCAtThrowStmtClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_ObjCAtSynchronizedStmtClass == clang::Stmt::ObjCAtSynchronizedStmtClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_ObjCForCollectionStmtClass == clang::Stmt::ObjCForCollectionStmtClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_ObjCAutoreleasePoolStmtClass == clang::Stmt::ObjCAutoreleasePoolStmtClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_CXXCatchStmtClass == clang::Stmt::CXXCatchStmtClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_CXXTryStmtClass == clang::Stmt::CXXTryStmtClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_CXXForRangeStmtClass == clang::Stmt::CXXForRangeStmtClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_CoroutineBodyStmtClass == clang::Stmt::CoroutineBodyStmtClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_CoreturnStmtClass == clang::Stmt::CoreturnStmtClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_PredefinedExprClass == clang::Stmt::PredefinedExprClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_DeclRefExprClass == clang::Stmt::DeclRefExprClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_IntegerLiteralClass == clang::Stmt::IntegerLiteralClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_FixedPointLiteralClass == clang::Stmt::FixedPointLiteralClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_FloatingLiteralClass == clang::Stmt::FloatingLiteralClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_ImaginaryLiteralClass == clang::Stmt::ImaginaryLiteralClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_StringLiteralClass == clang::Stmt::StringLiteralClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_CharacterLiteralClass == clang::Stmt::CharacterLiteralClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_ParenExprClass == clang::Stmt::ParenExprClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_UnaryOperatorClass == clang::Stmt::UnaryOperatorClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_OffsetOfExprClass == clang::Stmt::OffsetOfExprClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_UnaryExprOrTypeTraitExprClass == clang::Stmt::UnaryExprOrTypeTraitExprClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_ArraySubscriptExprClass == clang::Stmt::ArraySubscriptExprClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPArraySectionExprClass == clang::Stmt::OMPArraySectionExprClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_CallExprClass == clang::Stmt::CallExprClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_MemberExprClass == clang::Stmt::MemberExprClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_BinaryOperatorClass == clang::Stmt::BinaryOperatorClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_CompoundAssignOperatorClass == clang::Stmt::CompoundAssignOperatorClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_ConditionalOperatorClass == clang::Stmt::ConditionalOperatorClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_BinaryConditionalOperatorClass == clang::Stmt::BinaryConditionalOperatorClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_ImplicitCastExprClass == clang::Stmt::ImplicitCastExprClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_CStyleCastExprClass == clang::Stmt::CStyleCastExprClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_CompoundLiteralExprClass == clang::Stmt::CompoundLiteralExprClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_ExtVectorElementExprClass == clang::Stmt::ExtVectorElementExprClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_InitListExprClass == clang::Stmt::InitListExprClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_DesignatedInitExprClass == clang::Stmt::DesignatedInitExprClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_DesignatedInitUpdateExprClass == clang::Stmt::DesignatedInitUpdateExprClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_ImplicitValueInitExprClass == clang::Stmt::ImplicitValueInitExprClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_NoInitExprClass == clang::Stmt::NoInitExprClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_ArrayInitLoopExprClass == clang::Stmt::ArrayInitLoopExprClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_ArrayInitIndexExprClass == clang::Stmt::ArrayInitIndexExprClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_ParenListExprClass == clang::Stmt::ParenListExprClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_VAArgExprClass == clang::Stmt::VAArgExprClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_GenericSelectionExprClass == clang::Stmt::GenericSelectionExprClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_PseudoObjectExprClass == clang::Stmt::PseudoObjectExprClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_ConstantExprClass == clang::Stmt::ConstantExprClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_AtomicExprClass == clang::Stmt::AtomicExprClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_AddrLabelExprClass == clang::Stmt::AddrLabelExprClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_StmtExprClass == clang::Stmt::StmtExprClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_ChooseExprClass == clang::Stmt::ChooseExprClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_GNUNullExprClass == clang::Stmt::GNUNullExprClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_CXXOperatorCallExprClass == clang::Stmt::CXXOperatorCallExprClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_CXXMemberCallExprClass == clang::Stmt::CXXMemberCallExprClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_CXXStaticCastExprClass == clang::Stmt::CXXStaticCastExprClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_CXXDynamicCastExprClass == clang::Stmt::CXXDynamicCastExprClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_CXXReinterpretCastExprClass == clang::Stmt::CXXReinterpretCastExprClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_CXXConstCastExprClass == clang::Stmt::CXXConstCastExprClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_CXXFunctionalCastExprClass == clang::Stmt::CXXFunctionalCastExprClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_CXXTypeidExprClass == clang::Stmt::CXXTypeidExprClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_UserDefinedLiteralClass == clang::Stmt::UserDefinedLiteralClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_CXXBoolLiteralExprClass == clang::Stmt::CXXBoolLiteralExprClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_CXXNullPtrLiteralExprClass == clang::Stmt::CXXNullPtrLiteralExprClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_CXXThisExprClass == clang::Stmt::CXXThisExprClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_CXXThrowExprClass == clang::Stmt::CXXThrowExprClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_CXXDefaultArgExprClass == clang::Stmt::CXXDefaultArgExprClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_CXXDefaultInitExprClass == clang::Stmt::CXXDefaultInitExprClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_CXXScalarValueInitExprClass == clang::Stmt::CXXScalarValueInitExprClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_CXXStdInitializerListExprClass == clang::Stmt::CXXStdInitializerListExprClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_CXXNewExprClass == clang::Stmt::CXXNewExprClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_CXXDeleteExprClass == clang::Stmt::CXXDeleteExprClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_CXXPseudoDestructorExprClass == clang::Stmt::CXXPseudoDestructorExprClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_TypeTraitExprClass == clang::Stmt::TypeTraitExprClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_ArrayTypeTraitExprClass == clang::Stmt::ArrayTypeTraitExprClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_ExpressionTraitExprClass == clang::Stmt::ExpressionTraitExprClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_DependentScopeDeclRefExprClass == clang::Stmt::DependentScopeDeclRefExprClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_CXXConstructExprClass == clang::Stmt::CXXConstructExprClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_CXXInheritedCtorInitExprClass == clang::Stmt::CXXInheritedCtorInitExprClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_CXXBindTemporaryExprClass == clang::Stmt::CXXBindTemporaryExprClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_ExprWithCleanupsClass == clang::Stmt::ExprWithCleanupsClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_CXXTemporaryObjectExprClass == clang::Stmt::CXXTemporaryObjectExprClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_CXXUnresolvedConstructExprClass == clang::Stmt::CXXUnresolvedConstructExprClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_CXXDependentScopeMemberExprClass == clang::Stmt::CXXDependentScopeMemberExprClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_UnresolvedLookupExprClass == clang::Stmt::UnresolvedLookupExprClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_UnresolvedMemberExprClass == clang::Stmt::UnresolvedMemberExprClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_CXXNoexceptExprClass == clang::Stmt::CXXNoexceptExprClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_PackExpansionExprClass == clang::Stmt::PackExpansionExprClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_SizeOfPackExprClass == clang::Stmt::SizeOfPackExprClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_SubstNonTypeTemplateParmExprClass == clang::Stmt::SubstNonTypeTemplateParmExprClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_SubstNonTypeTemplateParmPackExprClass == clang::Stmt::SubstNonTypeTemplateParmPackExprClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_FunctionParmPackExprClass == clang::Stmt::FunctionParmPackExprClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_MaterializeTemporaryExprClass == clang::Stmt::MaterializeTemporaryExprClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_LambdaExprClass == clang::Stmt::LambdaExprClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_CXXFoldExprClass == clang::Stmt::CXXFoldExprClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_CoawaitExprClass == clang::Stmt::CoawaitExprClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_DependentCoawaitExprClass == clang::Stmt::DependentCoawaitExprClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_CoyieldExprClass == clang::Stmt::CoyieldExprClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_ObjCStringLiteralClass == clang::Stmt::ObjCStringLiteralClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_ObjCBoxedExprClass == clang::Stmt::ObjCBoxedExprClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_ObjCArrayLiteralClass == clang::Stmt::ObjCArrayLiteralClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_ObjCDictionaryLiteralClass == clang::Stmt::ObjCDictionaryLiteralClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_ObjCEncodeExprClass == clang::Stmt::ObjCEncodeExprClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_ObjCMessageExprClass == clang::Stmt::ObjCMessageExprClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_ObjCSelectorExprClass == clang::Stmt::ObjCSelectorExprClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_ObjCProtocolExprClass == clang::Stmt::ObjCProtocolExprClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_ObjCIvarRefExprClass == clang::Stmt::ObjCIvarRefExprClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_ObjCPropertyRefExprClass == clang::Stmt::ObjCPropertyRefExprClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_ObjCIsaExprClass == clang::Stmt::ObjCIsaExprClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_ObjCIndirectCopyRestoreExprClass == clang::Stmt::ObjCIndirectCopyRestoreExprClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_ObjCBoolLiteralExprClass == clang::Stmt::ObjCBoolLiteralExprClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_ObjCSubscriptRefExprClass == clang::Stmt::ObjCSubscriptRefExprClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_ObjCAvailabilityCheckExprClass == clang::Stmt::ObjCAvailabilityCheckExprClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_ObjCBridgedCastExprClass == clang::Stmt::ObjCBridgedCastExprClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_CUDAKernelCallExprClass == clang::Stmt::CUDAKernelCallExprClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_ShuffleVectorExprClass == clang::Stmt::ShuffleVectorExprClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_ConvertVectorExprClass == clang::Stmt::ConvertVectorExprClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_BlockExprClass == clang::Stmt::BlockExprClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_OpaqueValueExprClass == clang::Stmt::OpaqueValueExprClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_TypoExprClass == clang::Stmt::TypoExprClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_MSPropertyRefExprClass == clang::Stmt::MSPropertyRefExprClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_MSPropertySubscriptExprClass == clang::Stmt::MSPropertySubscriptExprClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_CXXUuidofExprClass == clang::Stmt::CXXUuidofExprClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_SEHTryStmtClass == clang::Stmt::SEHTryStmtClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_SEHExceptStmtClass == clang::Stmt::SEHExceptStmtClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_SEHFinallyStmtClass == clang::Stmt::SEHFinallyStmtClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_SEHLeaveStmtClass == clang::Stmt::SEHLeaveStmtClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_MSDependentExistsStmtClass == clang::Stmt::MSDependentExistsStmtClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_AsTypeExprClass == clang::Stmt::AsTypeExprClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPParallelDirectiveClass == clang::Stmt::OMPParallelDirectiveClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPSimdDirectiveClass == clang::Stmt::OMPSimdDirectiveClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPForDirectiveClass == clang::Stmt::OMPForDirectiveClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPForSimdDirectiveClass == clang::Stmt::OMPForSimdDirectiveClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPSectionsDirectiveClass == clang::Stmt::OMPSectionsDirectiveClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPSectionDirectiveClass == clang::Stmt::OMPSectionDirectiveClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPSingleDirectiveClass == clang::Stmt::OMPSingleDirectiveClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPMasterDirectiveClass == clang::Stmt::OMPMasterDirectiveClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPCriticalDirectiveClass == clang::Stmt::OMPCriticalDirectiveClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPParallelForDirectiveClass == clang::Stmt::OMPParallelForDirectiveClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPParallelForSimdDirectiveClass == clang::Stmt::OMPParallelForSimdDirectiveClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPParallelSectionsDirectiveClass == clang::Stmt::OMPParallelSectionsDirectiveClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPTaskDirectiveClass == clang::Stmt::OMPTaskDirectiveClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPTaskyieldDirectiveClass == clang::Stmt::OMPTaskyieldDirectiveClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPBarrierDirectiveClass == clang::Stmt::OMPBarrierDirectiveClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPTaskwaitDirectiveClass == clang::Stmt::OMPTaskwaitDirectiveClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPTaskgroupDirectiveClass == clang::Stmt::OMPTaskgroupDirectiveClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPFlushDirectiveClass == clang::Stmt::OMPFlushDirectiveClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPOrderedDirectiveClass == clang::Stmt::OMPOrderedDirectiveClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPAtomicDirectiveClass == clang::Stmt::OMPAtomicDirectiveClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPTargetDirectiveClass == clang::Stmt::OMPTargetDirectiveClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPTargetDataDirectiveClass == clang::Stmt::OMPTargetDataDirectiveClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPTargetEnterDataDirectiveClass == clang::Stmt::OMPTargetEnterDataDirectiveClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPTargetExitDataDirectiveClass == clang::Stmt::OMPTargetExitDataDirectiveClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPTargetParallelDirectiveClass == clang::Stmt::OMPTargetParallelDirectiveClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPTargetParallelForDirectiveClass == clang::Stmt::OMPTargetParallelForDirectiveClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPTargetUpdateDirectiveClass == clang::Stmt::OMPTargetUpdateDirectiveClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPTeamsDirectiveClass == clang::Stmt::OMPTeamsDirectiveClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPCancellationPointDirectiveClass == clang::Stmt::OMPCancellationPointDirectiveClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPCancelDirectiveClass == clang::Stmt::OMPCancelDirectiveClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPTaskLoopDirectiveClass == clang::Stmt::OMPTaskLoopDirectiveClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPTaskLoopSimdDirectiveClass == clang::Stmt::OMPTaskLoopSimdDirectiveClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPDistributeDirectiveClass == clang::Stmt::OMPDistributeDirectiveClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPDistributeParallelForDirectiveClass == clang::Stmt::OMPDistributeParallelForDirectiveClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPDistributeParallelForSimdDirectiveClass == clang::Stmt::OMPDistributeParallelForSimdDirectiveClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPDistributeSimdDirectiveClass == clang::Stmt::OMPDistributeSimdDirectiveClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPTargetParallelForSimdDirectiveClass == clang::Stmt::OMPTargetParallelForSimdDirectiveClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPTargetSimdDirectiveClass == clang::Stmt::OMPTargetSimdDirectiveClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPTeamsDistributeDirectiveClass == clang::Stmt::OMPTeamsDistributeDirectiveClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPTeamsDistributeSimdDirectiveClass == clang::Stmt::OMPTeamsDistributeSimdDirectiveClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPTeamsDistributeParallelForSimdDirectiveClass == clang::Stmt::OMPTeamsDistributeParallelForSimdDirectiveClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPTeamsDistributeParallelForDirectiveClass == clang::Stmt::OMPTeamsDistributeParallelForDirectiveClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPTargetTeamsDirectiveClass == clang::Stmt::OMPTargetTeamsDirectiveClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPTargetTeamsDistributeDirectiveClass == clang::Stmt::OMPTargetTeamsDistributeDirectiveClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPTargetTeamsDistributeParallelForDirectiveClass == clang::Stmt::OMPTargetTeamsDistributeParallelForDirectiveClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPTargetTeamsDistributeParallelForSimdDirectiveClass == clang::Stmt::OMPTargetTeamsDistributeParallelForSimdDirectiveClass, "");
+static_assert((clang::Stmt::StmtClass)ZigClangStmt_OMPTargetTeamsDistributeSimdDirectiveClass == clang::Stmt::OMPTargetTeamsDistributeSimdDirectiveClass, "");
+
 
 static_assert(sizeof(ZigClangSourceLocation) == sizeof(clang::SourceLocation), "");
 static ZigClangSourceLocation bitcast(clang::SourceLocation src) {
src/zig_clang.h
@@ -200,6 +200,206 @@ enum ZigClangTypeClass {
     ZigClangType_Atomic,
 };
 
+enum ZigClangStmtClass {
+    ZigClangStmt_NoStmtClass = 0,
+    ZigClangStmt_GCCAsmStmtClass,
+    ZigClangStmt_MSAsmStmtClass,
+    ZigClangStmt_AttributedStmtClass,
+    ZigClangStmt_BreakStmtClass,
+    ZigClangStmt_CXXCatchStmtClass,
+    ZigClangStmt_CXXForRangeStmtClass,
+    ZigClangStmt_CXXTryStmtClass,
+    ZigClangStmt_CapturedStmtClass,
+    ZigClangStmt_CompoundStmtClass,
+    ZigClangStmt_ContinueStmtClass,
+    ZigClangStmt_CoreturnStmtClass,
+    ZigClangStmt_CoroutineBodyStmtClass,
+    ZigClangStmt_DeclStmtClass,
+    ZigClangStmt_DoStmtClass,
+    ZigClangStmt_BinaryConditionalOperatorClass,
+    ZigClangStmt_ConditionalOperatorClass,
+    ZigClangStmt_AddrLabelExprClass,
+    ZigClangStmt_ArrayInitIndexExprClass,
+    ZigClangStmt_ArrayInitLoopExprClass,
+    ZigClangStmt_ArraySubscriptExprClass,
+    ZigClangStmt_ArrayTypeTraitExprClass,
+    ZigClangStmt_AsTypeExprClass,
+    ZigClangStmt_AtomicExprClass,
+    ZigClangStmt_BinaryOperatorClass,
+    ZigClangStmt_CompoundAssignOperatorClass,
+    ZigClangStmt_BlockExprClass,
+    ZigClangStmt_CXXBindTemporaryExprClass,
+    ZigClangStmt_CXXBoolLiteralExprClass,
+    ZigClangStmt_CXXConstructExprClass,
+    ZigClangStmt_CXXTemporaryObjectExprClass,
+    ZigClangStmt_CXXDefaultArgExprClass,
+    ZigClangStmt_CXXDefaultInitExprClass,
+    ZigClangStmt_CXXDeleteExprClass,
+    ZigClangStmt_CXXDependentScopeMemberExprClass,
+    ZigClangStmt_CXXFoldExprClass,
+    ZigClangStmt_CXXInheritedCtorInitExprClass,
+    ZigClangStmt_CXXNewExprClass,
+    ZigClangStmt_CXXNoexceptExprClass,
+    ZigClangStmt_CXXNullPtrLiteralExprClass,
+    ZigClangStmt_CXXPseudoDestructorExprClass,
+    ZigClangStmt_CXXScalarValueInitExprClass,
+    ZigClangStmt_CXXStdInitializerListExprClass,
+    ZigClangStmt_CXXThisExprClass,
+    ZigClangStmt_CXXThrowExprClass,
+    ZigClangStmt_CXXTypeidExprClass,
+    ZigClangStmt_CXXUnresolvedConstructExprClass,
+    ZigClangStmt_CXXUuidofExprClass,
+    ZigClangStmt_CallExprClass,
+    ZigClangStmt_CUDAKernelCallExprClass,
+    ZigClangStmt_CXXMemberCallExprClass,
+    ZigClangStmt_CXXOperatorCallExprClass,
+    ZigClangStmt_UserDefinedLiteralClass,
+    ZigClangStmt_CStyleCastExprClass,
+    ZigClangStmt_CXXFunctionalCastExprClass,
+    ZigClangStmt_CXXConstCastExprClass,
+    ZigClangStmt_CXXDynamicCastExprClass,
+    ZigClangStmt_CXXReinterpretCastExprClass,
+    ZigClangStmt_CXXStaticCastExprClass,
+    ZigClangStmt_ObjCBridgedCastExprClass,
+    ZigClangStmt_ImplicitCastExprClass,
+    ZigClangStmt_CharacterLiteralClass,
+    ZigClangStmt_ChooseExprClass,
+    ZigClangStmt_CompoundLiteralExprClass,
+    ZigClangStmt_ConvertVectorExprClass,
+    ZigClangStmt_CoawaitExprClass,
+    ZigClangStmt_CoyieldExprClass,
+    ZigClangStmt_DeclRefExprClass,
+    ZigClangStmt_DependentCoawaitExprClass,
+    ZigClangStmt_DependentScopeDeclRefExprClass,
+    ZigClangStmt_DesignatedInitExprClass,
+    ZigClangStmt_DesignatedInitUpdateExprClass,
+    ZigClangStmt_ExpressionTraitExprClass,
+    ZigClangStmt_ExtVectorElementExprClass,
+    ZigClangStmt_FixedPointLiteralClass,
+    ZigClangStmt_FloatingLiteralClass,
+    ZigClangStmt_ConstantExprClass,
+    ZigClangStmt_ExprWithCleanupsClass,
+    ZigClangStmt_FunctionParmPackExprClass,
+    ZigClangStmt_GNUNullExprClass,
+    ZigClangStmt_GenericSelectionExprClass,
+    ZigClangStmt_ImaginaryLiteralClass,
+    ZigClangStmt_ImplicitValueInitExprClass,
+    ZigClangStmt_InitListExprClass,
+    ZigClangStmt_IntegerLiteralClass,
+    ZigClangStmt_LambdaExprClass,
+    ZigClangStmt_MSPropertyRefExprClass,
+    ZigClangStmt_MSPropertySubscriptExprClass,
+    ZigClangStmt_MaterializeTemporaryExprClass,
+    ZigClangStmt_MemberExprClass,
+    ZigClangStmt_NoInitExprClass,
+    ZigClangStmt_OMPArraySectionExprClass,
+    ZigClangStmt_ObjCArrayLiteralClass,
+    ZigClangStmt_ObjCAvailabilityCheckExprClass,
+    ZigClangStmt_ObjCBoolLiteralExprClass,
+    ZigClangStmt_ObjCBoxedExprClass,
+    ZigClangStmt_ObjCDictionaryLiteralClass,
+    ZigClangStmt_ObjCEncodeExprClass,
+    ZigClangStmt_ObjCIndirectCopyRestoreExprClass,
+    ZigClangStmt_ObjCIsaExprClass,
+    ZigClangStmt_ObjCIvarRefExprClass,
+    ZigClangStmt_ObjCMessageExprClass,
+    ZigClangStmt_ObjCPropertyRefExprClass,
+    ZigClangStmt_ObjCProtocolExprClass,
+    ZigClangStmt_ObjCSelectorExprClass,
+    ZigClangStmt_ObjCStringLiteralClass,
+    ZigClangStmt_ObjCSubscriptRefExprClass,
+    ZigClangStmt_OffsetOfExprClass,
+    ZigClangStmt_OpaqueValueExprClass,
+    ZigClangStmt_UnresolvedLookupExprClass,
+    ZigClangStmt_UnresolvedMemberExprClass,
+    ZigClangStmt_PackExpansionExprClass,
+    ZigClangStmt_ParenExprClass,
+    ZigClangStmt_ParenListExprClass,
+    ZigClangStmt_PredefinedExprClass,
+    ZigClangStmt_PseudoObjectExprClass,
+    ZigClangStmt_ShuffleVectorExprClass,
+    ZigClangStmt_SizeOfPackExprClass,
+    ZigClangStmt_StmtExprClass,
+    ZigClangStmt_StringLiteralClass,
+    ZigClangStmt_SubstNonTypeTemplateParmExprClass,
+    ZigClangStmt_SubstNonTypeTemplateParmPackExprClass,
+    ZigClangStmt_TypeTraitExprClass,
+    ZigClangStmt_TypoExprClass,
+    ZigClangStmt_UnaryExprOrTypeTraitExprClass,
+    ZigClangStmt_UnaryOperatorClass,
+    ZigClangStmt_VAArgExprClass,
+    ZigClangStmt_ForStmtClass,
+    ZigClangStmt_GotoStmtClass,
+    ZigClangStmt_IfStmtClass,
+    ZigClangStmt_IndirectGotoStmtClass,
+    ZigClangStmt_LabelStmtClass,
+    ZigClangStmt_MSDependentExistsStmtClass,
+    ZigClangStmt_NullStmtClass,
+    ZigClangStmt_OMPAtomicDirectiveClass,
+    ZigClangStmt_OMPBarrierDirectiveClass,
+    ZigClangStmt_OMPCancelDirectiveClass,
+    ZigClangStmt_OMPCancellationPointDirectiveClass,
+    ZigClangStmt_OMPCriticalDirectiveClass,
+    ZigClangStmt_OMPFlushDirectiveClass,
+    ZigClangStmt_OMPDistributeDirectiveClass,
+    ZigClangStmt_OMPDistributeParallelForDirectiveClass,
+    ZigClangStmt_OMPDistributeParallelForSimdDirectiveClass,
+    ZigClangStmt_OMPDistributeSimdDirectiveClass,
+    ZigClangStmt_OMPForDirectiveClass,
+    ZigClangStmt_OMPForSimdDirectiveClass,
+    ZigClangStmt_OMPParallelForDirectiveClass,
+    ZigClangStmt_OMPParallelForSimdDirectiveClass,
+    ZigClangStmt_OMPSimdDirectiveClass,
+    ZigClangStmt_OMPTargetParallelForSimdDirectiveClass,
+    ZigClangStmt_OMPTargetSimdDirectiveClass,
+    ZigClangStmt_OMPTargetTeamsDistributeDirectiveClass,
+    ZigClangStmt_OMPTargetTeamsDistributeParallelForDirectiveClass,
+    ZigClangStmt_OMPTargetTeamsDistributeParallelForSimdDirectiveClass,
+    ZigClangStmt_OMPTargetTeamsDistributeSimdDirectiveClass,
+    ZigClangStmt_OMPTaskLoopDirectiveClass,
+    ZigClangStmt_OMPTaskLoopSimdDirectiveClass,
+    ZigClangStmt_OMPTeamsDistributeDirectiveClass,
+    ZigClangStmt_OMPTeamsDistributeParallelForDirectiveClass,
+    ZigClangStmt_OMPTeamsDistributeParallelForSimdDirectiveClass,
+    ZigClangStmt_OMPTeamsDistributeSimdDirectiveClass,
+    ZigClangStmt_OMPMasterDirectiveClass,
+    ZigClangStmt_OMPOrderedDirectiveClass,
+    ZigClangStmt_OMPParallelDirectiveClass,
+    ZigClangStmt_OMPParallelSectionsDirectiveClass,
+    ZigClangStmt_OMPSectionDirectiveClass,
+    ZigClangStmt_OMPSectionsDirectiveClass,
+    ZigClangStmt_OMPSingleDirectiveClass,
+    ZigClangStmt_OMPTargetDataDirectiveClass,
+    ZigClangStmt_OMPTargetDirectiveClass,
+    ZigClangStmt_OMPTargetEnterDataDirectiveClass,
+    ZigClangStmt_OMPTargetExitDataDirectiveClass,
+    ZigClangStmt_OMPTargetParallelDirectiveClass,
+    ZigClangStmt_OMPTargetParallelForDirectiveClass,
+    ZigClangStmt_OMPTargetTeamsDirectiveClass,
+    ZigClangStmt_OMPTargetUpdateDirectiveClass,
+    ZigClangStmt_OMPTaskDirectiveClass,
+    ZigClangStmt_OMPTaskgroupDirectiveClass,
+    ZigClangStmt_OMPTaskwaitDirectiveClass,
+    ZigClangStmt_OMPTaskyieldDirectiveClass,
+    ZigClangStmt_OMPTeamsDirectiveClass,
+    ZigClangStmt_ObjCAtCatchStmtClass,
+    ZigClangStmt_ObjCAtFinallyStmtClass,
+    ZigClangStmt_ObjCAtSynchronizedStmtClass,
+    ZigClangStmt_ObjCAtThrowStmtClass,
+    ZigClangStmt_ObjCAtTryStmtClass,
+    ZigClangStmt_ObjCAutoreleasePoolStmtClass,
+    ZigClangStmt_ObjCForCollectionStmtClass,
+    ZigClangStmt_ReturnStmtClass,
+    ZigClangStmt_SEHExceptStmtClass,
+    ZigClangStmt_SEHFinallyStmtClass,
+    ZigClangStmt_SEHLeaveStmtClass,
+    ZigClangStmt_SEHTryStmtClass,
+    ZigClangStmt_CaseStmtClass,
+    ZigClangStmt_DefaultStmtClass,
+    ZigClangStmt_SwitchStmtClass,
+    ZigClangStmt_WhileStmtClass,
+};
+
 //struct ZigClangCC_AAPCS;
 //struct ZigClangCC_AAPCS_VFP;
 //struct ZigClangCC_C;