authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2017-09-06 01:00:42-04:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2017-09-06 01:00:42-04:00
loge7c3aa7f7cfd74b9f5cc6a3c367757d4f7004e4f
tree3d449269c8fdfd0631f6e0fa8709e8b3c613c57d
parent4b6e27802890c4f8030f10c0e6de9ae6beb19e56

parsec: turn panics into warnings


1 files changed, 794 insertions(+), 388 deletions(-)

src/parsec.cpp+794-388
...@@ -54,8 +54,6 @@ struct Context {...@@ -54,8 +54,6 @@ struct Context {
54static AstNode *resolve_record_decl(Context *c, const RecordDecl *record_decl);54static AstNode *resolve_record_decl(Context *c, const RecordDecl *record_decl);
55static AstNode *resolve_enum_decl(Context *c, const EnumDecl *enum_decl);55static AstNode *resolve_enum_decl(Context *c, const EnumDecl *enum_decl);
56static AstNode *resolve_typedef_decl(Context *c, const TypedefNameDecl *typedef_decl);56static AstNode *resolve_typedef_decl(Context *c, const TypedefNameDecl *typedef_decl);
57static AstNode *trans_qual_type_with_table(Context *c, QualType qt, const SourceLocation &source_loc);
58static AstNode *trans_qual_type(Context *c, QualType qt, const SourceLocation &source_loc);
5957
6058
61__attribute__ ((format (printf, 3, 4)))59__attribute__ ((format (printf, 3, 4)))
...@@ -362,14 +360,15 @@ static bool c_is_float(Context *c, QualType qt) {...@@ -362,14 +360,15 @@ static bool c_is_float(Context *c, QualType qt) {
362 }360 }
363}361}
364362
365static AstNode * trans_stmt(Context *c, AstNode *block, Stmt *stmt);363static AstNode *trans_stmt(Context *c, AstNode *block, Stmt *stmt);
366static AstNode * trans_qual_type(Context *c, QualType qt, const SourceLocation &source_loc);364static AstNode *trans_qual_type(Context *c, QualType qt, const SourceLocation &source_loc);
365static AstNode *const skip_add_to_block_node = (AstNode *) 0x2;
367366
368static AstNode * trans_expr(Context *c, AstNode *block, Expr *expr) {367static AstNode *trans_expr(Context *c, AstNode *block, Expr *expr) {
369 return trans_stmt(c, block, expr);368 return trans_stmt(c, block, expr);
370}369}
371370
372static AstNode *trans_type_with_table(Context *c, const Type *ty, const SourceLocation &source_loc) {371static AstNode *trans_type(Context *c, const Type *ty, const SourceLocation &source_loc) {
373 switch (ty->getTypeClass()) {372 switch (ty->getTypeClass()) {
374 case Type::Builtin:373 case Type::Builtin:
375 {374 {
...@@ -506,9 +505,9 @@ static AstNode *trans_type_with_table(Context *c, const Type *ty, const SourceLo...@@ -506,9 +505,9 @@ static AstNode *trans_type_with_table(Context *c, const Type *ty, const SourceLo
506 const ElaboratedType *elaborated_ty = static_cast<const ElaboratedType*>(ty);505 const ElaboratedType *elaborated_ty = static_cast<const ElaboratedType*>(ty);
507 switch (elaborated_ty->getKeyword()) {506 switch (elaborated_ty->getKeyword()) {
508 case ETK_Struct:507 case ETK_Struct:
509 return trans_qual_type_with_table(c, elaborated_ty->getNamedType(), source_loc);508 return trans_qual_type(c, elaborated_ty->getNamedType(), source_loc);
510 case ETK_Enum:509 case ETK_Enum:
511 return trans_qual_type_with_table(c, elaborated_ty->getNamedType(), source_loc);510 return trans_qual_type(c, elaborated_ty->getNamedType(), source_loc);
512 case ETK_Interface:511 case ETK_Interface:
513 case ETK_Union:512 case ETK_Union:
514 case ETK_Class:513 case ETK_Class:
...@@ -703,19 +702,17 @@ static AstNode *trans_type_with_table(Context *c, const Type *ty, const SourceLo...@@ -703,19 +702,17 @@ static AstNode *trans_type_with_table(Context *c, const Type *ty, const SourceLo
703 zig_unreachable();702 zig_unreachable();
704}703}
705704
706static AstNode * trans_qual_type_with_table(Context *c, QualType qt, const SourceLocation &source_loc) {705static AstNode *trans_qual_type(Context *c, QualType qt, const SourceLocation &source_loc) {
707 return trans_type_with_table(c, qt.getTypePtr(), source_loc);706 return trans_type(c, qt.getTypePtr(), source_loc);
708}
709
710static AstNode * trans_qual_type(Context *c, QualType qt, const SourceLocation &source_loc) {
711 return trans_qual_type_with_table(c, qt, source_loc);
712}707}
713708
714static AstNode * trans_compound_stmt(Context *c, AstNode *parent, CompoundStmt *stmt) {709static AstNode *trans_compound_stmt(Context *c, AstNode *parent, CompoundStmt *stmt) {
715 AstNode *child_block = trans_create_node(c, NodeTypeBlock);710 AstNode *child_block = trans_create_node(c, NodeTypeBlock);
716 for (CompoundStmt::body_iterator it = stmt->body_begin(), end_it = stmt->body_end(); it != end_it; ++it) {711 for (CompoundStmt::body_iterator it = stmt->body_begin(), end_it = stmt->body_end(); it != end_it; ++it) {
717 AstNode *child_node = trans_stmt(c, child_block, *it);712 AstNode *child_node = trans_stmt(c, child_block, *it);
718 if (child_node != nullptr)713 if (child_node == nullptr)
714 return nullptr;
715 if (child_node != skip_add_to_block_node)
719 child_block->data.block.statements.append(child_node);716 child_block->data.block.statements.append(child_node);
720 }717 }
721 return child_block;718 return child_block;
...@@ -724,10 +721,13 @@ static AstNode * trans_compound_stmt(Context *c, AstNode *parent, CompoundStmt *...@@ -724,10 +721,13 @@ static AstNode * trans_compound_stmt(Context *c, AstNode *parent, CompoundStmt *
724static AstNode *trans_return_stmt(Context *c, AstNode *block, ReturnStmt *stmt) {721static AstNode *trans_return_stmt(Context *c, AstNode *block, ReturnStmt *stmt) {
725 Expr *value_expr = stmt->getRetValue();722 Expr *value_expr = stmt->getRetValue();
726 if (value_expr == nullptr) {723 if (value_expr == nullptr) {
727 zig_panic("TODO handle C return void");724 emit_warning(c, stmt->getLocStart(), "TODO handle C return void");
725 return nullptr;
728 } else {726 } else {
729 AstNode *return_node = trans_create_node(c, NodeTypeReturnExpr);727 AstNode *return_node = trans_create_node(c, NodeTypeReturnExpr);
730 return_node->data.return_expr.expr = trans_expr(c, block, value_expr);728 return_node->data.return_expr.expr = trans_expr(c, block, value_expr);
729 if (return_node->data.return_expr.expr == nullptr)
730 return nullptr;
731 return return_node;731 return return_node;
732 }732 }
733}733}
...@@ -735,7 +735,8 @@ static AstNode *trans_return_stmt(Context *c, AstNode *block, ReturnStmt *stmt)...@@ -735,7 +735,8 @@ static AstNode *trans_return_stmt(Context *c, AstNode *block, ReturnStmt *stmt)
735static AstNode *trans_integer_literal(Context *c, IntegerLiteral *stmt) {735static AstNode *trans_integer_literal(Context *c, IntegerLiteral *stmt) {
736 llvm::APSInt result;736 llvm::APSInt result;
737 if (!stmt->EvaluateAsInt(result, *c->ctx)) {737 if (!stmt->EvaluateAsInt(result, *c->ctx)) {
738 zig_panic("TODO handle libclang unable to evaluate C integer literal");738 emit_warning(c, stmt->getLocStart(), "invalid integer literal");
739 return nullptr;
739 }740 }
740 return trans_create_node_apint(c, result);741 return trans_create_node_apint(c, result);
741}742}
...@@ -748,40 +749,64 @@ static AstNode *trans_conditional_operator(Context *c, AstNode *block, Condition...@@ -748,40 +749,64 @@ static AstNode *trans_conditional_operator(Context *c, AstNode *block, Condition
748 Expr *false_expr = stmt->getFalseExpr();749 Expr *false_expr = stmt->getFalseExpr();
749750
750 node->data.if_bool_expr.condition = trans_expr(c, block, cond_expr);751 node->data.if_bool_expr.condition = trans_expr(c, block, cond_expr);
752 if (node->data.if_bool_expr.condition == nullptr)
753 return nullptr;
754
751 node->data.if_bool_expr.then_block = trans_expr(c, block, true_expr);755 node->data.if_bool_expr.then_block = trans_expr(c, block, true_expr);
756 if (node->data.if_bool_expr.then_block == nullptr)
757 return nullptr;
758
752 node->data.if_bool_expr.else_node = trans_expr(c, block, false_expr);759 node->data.if_bool_expr.else_node = trans_expr(c, block, false_expr);
760 if (node->data.if_bool_expr.else_node == nullptr)
761 return nullptr;
753762
754 return node;763 return node;
755}764}
756765
757static AstNode * trans_create_bin_op(Context *c, AstNode *block, Expr *lhs, BinOpType bin_op, Expr *rhs) {766static AstNode *trans_create_bin_op(Context *c, AstNode *block, Expr *lhs, BinOpType bin_op, Expr *rhs) {
758 AstNode *node = trans_create_node(c, NodeTypeBinOpExpr);767 AstNode *node = trans_create_node(c, NodeTypeBinOpExpr);
759 node->data.bin_op_expr.bin_op = bin_op;768 node->data.bin_op_expr.bin_op = bin_op;
769
760 node->data.bin_op_expr.op1 = trans_expr(c, block, lhs);770 node->data.bin_op_expr.op1 = trans_expr(c, block, lhs);
771 if (node->data.bin_op_expr.op1 == nullptr)
772 return nullptr;
773
761 node->data.bin_op_expr.op2 = trans_expr(c, block, rhs);774 node->data.bin_op_expr.op2 = trans_expr(c, block, rhs);
775 if (node->data.bin_op_expr.op2 == nullptr)
776 return nullptr;
777
762 return node;778 return node;
763}779}
764780
765static AstNode * trans_binary_operator(Context *c, AstNode *block, BinaryOperator *stmt) {781static AstNode *trans_binary_operator(Context *c, AstNode *block, BinaryOperator *stmt) {
766 switch (stmt->getOpcode()) {782 switch (stmt->getOpcode()) {
767 case BO_PtrMemD:783 case BO_PtrMemD:
768 zig_panic("TODO handle more C binary operators: BO_PtrMemD");784 emit_warning(c, stmt->getLocStart(), "TODO handle more C binary operators: BO_PtrMemD");
785 return nullptr;
769 case BO_PtrMemI:786 case BO_PtrMemI:
770 zig_panic("TODO handle more C binary operators: BO_PtrMemI");787 emit_warning(c, stmt->getLocStart(), "TODO handle more C binary operators: BO_PtrMemI");
788 return nullptr;
771 case BO_Mul:789 case BO_Mul:
772 zig_panic("TODO handle more C binary operators: BO_Mul");790 emit_warning(c, stmt->getLocStart(), "TODO handle more C binary operators: BO_Mul");
791 return nullptr;
773 case BO_Div:792 case BO_Div:
774 zig_panic("TODO handle more C binary operators: BO_Div");793 emit_warning(c, stmt->getLocStart(), "TODO handle more C binary operators: BO_Div");
794 return nullptr;
775 case BO_Rem:795 case BO_Rem:
776 zig_panic("TODO handle more C binary operators: BO_Rem");796 emit_warning(c, stmt->getLocStart(), "TODO handle more C binary operators: BO_Rem");
797 return nullptr;
777 case BO_Add:798 case BO_Add:
778 zig_panic("TODO handle more C binary operators: BO_Add");799 emit_warning(c, stmt->getLocStart(), "TODO handle more C binary operators: BO_Add");
800 return nullptr;
779 case BO_Sub:801 case BO_Sub:
780 zig_panic("TODO handle more C binary operators: BO_Sub");802 emit_warning(c, stmt->getLocStart(), "TODO handle more C binary operators: BO_Sub");
803 return nullptr;
781 case BO_Shl:804 case BO_Shl:
782 zig_panic("TODO handle more C binary operators: BO_Shl");805 emit_warning(c, stmt->getLocStart(), "TODO handle more C binary operators: BO_Shl");
806 return nullptr;
783 case BO_Shr:807 case BO_Shr:
784 zig_panic("TODO handle more C binary operators: BO_Shr");808 emit_warning(c, stmt->getLocStart(), "TODO handle more C binary operators: BO_Shr");
809 return nullptr;
785 case BO_LT:810 case BO_LT:
786 return trans_create_bin_op(c, block, stmt->getLHS(), BinOpTypeCmpLessThan, stmt->getRHS());811 return trans_create_bin_op(c, block, stmt->getLHS(), BinOpTypeCmpLessThan, stmt->getRHS());
787 case BO_GT:812 case BO_GT:
...@@ -791,405 +816,596 @@ static AstNode * trans_binary_operator(Context *c, AstNode *block, BinaryOperato...@@ -791,405 +816,596 @@ static AstNode * trans_binary_operator(Context *c, AstNode *block, BinaryOperato
791 case BO_GE:816 case BO_GE:
792 return trans_create_bin_op(c, block, stmt->getLHS(), BinOpTypeCmpGreaterOrEq, stmt->getRHS());817 return trans_create_bin_op(c, block, stmt->getLHS(), BinOpTypeCmpGreaterOrEq, stmt->getRHS());
793 case BO_EQ:818 case BO_EQ:
794 zig_panic("TODO handle more C binary operators: BO_EQ");819 emit_warning(c, stmt->getLocStart(), "TODO handle more C binary operators: BO_EQ");
820 return nullptr;
795 case BO_NE:821 case BO_NE:
796 zig_panic("TODO handle more C binary operators: BO_NE");822 emit_warning(c, stmt->getLocStart(), "TODO handle more C binary operators: BO_NE");
823 return nullptr;
797 case BO_And:824 case BO_And:
798 zig_panic("TODO handle more C binary operators: BO_And");825 emit_warning(c, stmt->getLocStart(), "TODO handle more C binary operators: BO_And");
826 return nullptr;
799 case BO_Xor:827 case BO_Xor:
800 zig_panic("TODO handle more C binary operators: BO_Xor");828 emit_warning(c, stmt->getLocStart(), "TODO handle more C binary operators: BO_Xor");
829 return nullptr;
801 case BO_Or:830 case BO_Or:
802 zig_panic("TODO handle more C binary operators: BO_Or");831 emit_warning(c, stmt->getLocStart(), "TODO handle more C binary operators: BO_Or");
832 return nullptr;
803 case BO_LAnd:833 case BO_LAnd:
804 zig_panic("TODO handle more C binary operators: BO_LAnd");834 emit_warning(c, stmt->getLocStart(), "TODO handle more C binary operators: BO_LAnd");
835 return nullptr;
805 case BO_LOr:836 case BO_LOr:
806 zig_panic("TODO handle more C binary operators: BO_LOr");837 emit_warning(c, stmt->getLocStart(), "TODO handle more C binary operators: BO_LOr");
838 return nullptr;
807 case BO_Assign:839 case BO_Assign:
808 zig_panic("TODO handle more C binary operators: BO_Assign");840 emit_warning(c, stmt->getLocStart(), "TODO handle more C binary operators: BO_Assign");
841 return nullptr;
809 case BO_MulAssign:842 case BO_MulAssign:
810 zig_panic("TODO handle more C binary operators: BO_MulAssign");843 emit_warning(c, stmt->getLocStart(), "TODO handle more C binary operators: BO_MulAssign");
844 return nullptr;
811 case BO_DivAssign:845 case BO_DivAssign:
812 zig_panic("TODO handle more C binary operators: BO_DivAssign");846 emit_warning(c, stmt->getLocStart(), "TODO handle more C binary operators: BO_DivAssign");
847 return nullptr;
813 case BO_RemAssign:848 case BO_RemAssign:
814 zig_panic("TODO handle more C binary operators: BO_RemAssign");849 emit_warning(c, stmt->getLocStart(), "TODO handle more C binary operators: BO_RemAssign");
850 return nullptr;
815 case BO_AddAssign:851 case BO_AddAssign:
816 zig_panic("TODO handle more C binary operators: BO_AddAssign");852 emit_warning(c, stmt->getLocStart(), "TODO handle more C binary operators: BO_AddAssign");
853 return nullptr;
817 case BO_SubAssign:854 case BO_SubAssign:
818 zig_panic("TODO handle more C binary operators: BO_SubAssign");855 emit_warning(c, stmt->getLocStart(), "TODO handle more C binary operators: BO_SubAssign");
856 return nullptr;
819 case BO_ShlAssign:857 case BO_ShlAssign:
820 zig_panic("TODO handle more C binary operators: BO_ShlAssign");858 emit_warning(c, stmt->getLocStart(), "TODO handle more C binary operators: BO_ShlAssign");
859 return nullptr;
821 case BO_ShrAssign:860 case BO_ShrAssign:
822 zig_panic("TODO handle more C binary operators: BO_ShrAssign");861 emit_warning(c, stmt->getLocStart(), "TODO handle more C binary operators: BO_ShrAssign");
862 return nullptr;
823 case BO_AndAssign:863 case BO_AndAssign:
824 zig_panic("TODO handle more C binary operators: BO_AndAssign");864 emit_warning(c, stmt->getLocStart(), "TODO handle more C binary operators: BO_AndAssign");
865 return nullptr;
825 case BO_XorAssign:866 case BO_XorAssign:
826 zig_panic("TODO handle more C binary operators: BO_XorAssign");867 emit_warning(c, stmt->getLocStart(), "TODO handle more C binary operators: BO_XorAssign");
868 return nullptr;
827 case BO_OrAssign:869 case BO_OrAssign:
828 zig_panic("TODO handle more C binary operators: BO_OrAssign");870 emit_warning(c, stmt->getLocStart(), "TODO handle more C binary operators: BO_OrAssign");
871 return nullptr;
829 case BO_Comma:872 case BO_Comma:
830 zig_panic("TODO handle more C binary operators: BO_Comma");873 emit_warning(c, stmt->getLocStart(), "TODO handle more C binary operators: BO_Comma");
874 return nullptr;
831 }875 }
832876
833 zig_unreachable();877 zig_unreachable();
834}878}
835879
836static AstNode * trans_implicit_cast_expr(Context *c, AstNode *block, ImplicitCastExpr *stmt) {880static AstNode *trans_implicit_cast_expr(Context *c, AstNode *block, ImplicitCastExpr *stmt) {
837 switch (stmt->getCastKind()) {881 switch (stmt->getCastKind()) {
838 case CK_LValueToRValue:882 case CK_LValueToRValue:
839 return trans_expr(c, block, stmt->getSubExpr());883 return trans_expr(c, block, stmt->getSubExpr());
840 case CK_IntegralCast:884 case CK_IntegralCast:
841 {885 {
842 AstNode *node = trans_create_node_builtin_fn_call_str(c, "bitCast");886 AstNode *node = trans_create_node_builtin_fn_call_str(c, "bitCast");
843 node->data.fn_call_expr.params.append(trans_qual_type(c, stmt->getType(), stmt->getExprLoc()));887
844 node->data.fn_call_expr.params.append(trans_expr(c, block, stmt->getSubExpr()));888 AstNode *result_type_node = trans_qual_type(c, stmt->getType(), stmt->getExprLoc());
889 if (result_type_node == nullptr)
890 return nullptr;
891
892 AstNode *target_node = trans_expr(c, block, stmt->getSubExpr());
893 if (target_node == nullptr)
894 return nullptr;
895
896 node->data.fn_call_expr.params.append(result_type_node);
897 node->data.fn_call_expr.params.append(target_node);
845 return node;898 return node;
846 }899 }
847 case CK_Dependent:900 case CK_Dependent:
848 zig_panic("TODO handle C translation cast CK_Dependent");901 emit_warning(c, stmt->getLocStart(), "TODO handle C translation cast CK_Dependent");
902 return nullptr;
849 case CK_BitCast:903 case CK_BitCast:
850 zig_panic("TODO handle C translation cast CK_BitCast");904 emit_warning(c, stmt->getLocStart(), "TODO handle C translation cast CK_BitCast");
905 return nullptr;
851 case CK_LValueBitCast:906 case CK_LValueBitCast:
852 zig_panic("TODO handle C translation cast CK_LValueBitCast");907 emit_warning(c, stmt->getLocStart(), "TODO handle C translation cast CK_LValueBitCast");
908 return nullptr;
853 case CK_NoOp:909 case CK_NoOp:
854 zig_panic("TODO handle C translation cast CK_NoOp");910 emit_warning(c, stmt->getLocStart(), "TODO handle C translation cast CK_NoOp");
911 return nullptr;
855 case CK_BaseToDerived:912 case CK_BaseToDerived:
856 zig_panic("TODO handle C translation cast CK_BaseToDerived");913 emit_warning(c, stmt->getLocStart(), "TODO handle C translation cast CK_BaseToDerived");
914 return nullptr;
857 case CK_DerivedToBase:915 case CK_DerivedToBase:
858 zig_panic("TODO handle C translation cast CK_DerivedToBase");916 emit_warning(c, stmt->getLocStart(), "TODO handle C translation cast CK_DerivedToBase");
917 return nullptr;
859 case CK_UncheckedDerivedToBase:918 case CK_UncheckedDerivedToBase:
860 zig_panic("TODO handle C translation cast CK_UncheckedDerivedToBase");919 emit_warning(c, stmt->getLocStart(), "TODO handle C translation cast CK_UncheckedDerivedToBase");
920 return nullptr;
861 case CK_Dynamic:921 case CK_Dynamic:
862 zig_panic("TODO handle C translation cast CK_Dynamic");922 emit_warning(c, stmt->getLocStart(), "TODO handle C translation cast CK_Dynamic");
923 return nullptr;
863 case CK_ToUnion:924 case CK_ToUnion:
864 zig_panic("TODO handle C translation cast CK_ToUnion");925 emit_warning(c, stmt->getLocStart(), "TODO handle C translation cast CK_ToUnion");
926 return nullptr;
865 case CK_ArrayToPointerDecay:927 case CK_ArrayToPointerDecay:
866 zig_panic("TODO handle C translation cast CK_ArrayToPointerDecay");928 emit_warning(c, stmt->getLocStart(), "TODO handle C translation cast CK_ArrayToPointerDecay");
929 return nullptr;
867 case CK_FunctionToPointerDecay:930 case CK_FunctionToPointerDecay:
868 zig_panic("TODO handle C translation cast CK_FunctionToPointerDecay");931 emit_warning(c, stmt->getLocStart(), "TODO handle C translation cast CK_FunctionToPointerDecay");
932 return nullptr;
869 case CK_NullToPointer:933 case CK_NullToPointer:
870 zig_panic("TODO handle C translation cast CK_NullToPointer");934 emit_warning(c, stmt->getLocStart(), "TODO handle C translation cast CK_NullToPointer");
935 return nullptr;
871 case CK_NullToMemberPointer:936 case CK_NullToMemberPointer:
872 zig_panic("TODO handle C translation cast CK_NullToMemberPointer");937 emit_warning(c, stmt->getLocStart(), "TODO handle C translation cast CK_NullToMemberPointer");
938 return nullptr;
873 case CK_BaseToDerivedMemberPointer:939 case CK_BaseToDerivedMemberPointer:
874 zig_panic("TODO handle C translation cast CK_BaseToDerivedMemberPointer");940 emit_warning(c, stmt->getLocStart(), "TODO handle C translation cast CK_BaseToDerivedMemberPointer");
941 return nullptr;
875 case CK_DerivedToBaseMemberPointer:942 case CK_DerivedToBaseMemberPointer:
876 zig_panic("TODO handle C translation cast CK_DerivedToBaseMemberPointer");943 emit_warning(c, stmt->getLocStart(), "TODO handle C translation cast CK_DerivedToBaseMemberPointer");
944 return nullptr;
877 case CK_MemberPointerToBoolean:945 case CK_MemberPointerToBoolean:
878 zig_panic("TODO handle C translation cast CK_MemberPointerToBoolean");946 emit_warning(c, stmt->getLocStart(), "TODO handle C translation cast CK_MemberPointerToBoolean");
947 return nullptr;
879 case CK_ReinterpretMemberPointer:948 case CK_ReinterpretMemberPointer:
880 zig_panic("TODO handle C translation cast CK_ReinterpretMemberPointer");949 emit_warning(c, stmt->getLocStart(), "TODO handle C translation cast CK_ReinterpretMemberPointer");
950 return nullptr;
881 case CK_UserDefinedConversion:951 case CK_UserDefinedConversion:
882 zig_panic("TODO handle C translation cast CK_UserDefinedConversion");952 emit_warning(c, stmt->getLocStart(), "TODO handle C translation cast CK_UserDefinedConversion");
953 return nullptr;
883 case CK_ConstructorConversion:954 case CK_ConstructorConversion:
884 zig_panic("TODO handle C translation cast CK_ConstructorConversion");955 emit_warning(c, stmt->getLocStart(), "TODO handle C translation cast CK_ConstructorConversion");
956 return nullptr;
885 case CK_IntegralToPointer:957 case CK_IntegralToPointer:
886 zig_panic("TODO handle C translation cast CK_IntegralToPointer");958 emit_warning(c, stmt->getLocStart(), "TODO handle C translation cast CK_IntegralToPointer");
959 return nullptr;
887 case CK_PointerToIntegral:960 case CK_PointerToIntegral:
888 zig_panic("TODO handle C translation cast CK_PointerToIntegral");961 emit_warning(c, stmt->getLocStart(), "TODO handle C translation cast CK_PointerToIntegral");
962 return nullptr;
889 case CK_PointerToBoolean:963 case CK_PointerToBoolean:
890 zig_panic("TODO handle C translation cast CK_PointerToBoolean");964 emit_warning(c, stmt->getLocStart(), "TODO handle C translation cast CK_PointerToBoolean");
965 return nullptr;
891 case CK_ToVoid:966 case CK_ToVoid:
892 zig_panic("TODO handle C translation cast CK_ToVoid");967 emit_warning(c, stmt->getLocStart(), "TODO handle C translation cast CK_ToVoid");
968 return nullptr;
893 case CK_VectorSplat:969 case CK_VectorSplat:
894 zig_panic("TODO handle C translation cast CK_VectorSplat");970 emit_warning(c, stmt->getLocStart(), "TODO handle C translation cast CK_VectorSplat");
971 return nullptr;
895 case CK_IntegralToBoolean:972 case CK_IntegralToBoolean:
896 zig_panic("TODO handle C translation cast CK_IntegralToBoolean");973 emit_warning(c, stmt->getLocStart(), "TODO handle C translation cast CK_IntegralToBoolean");
974 return nullptr;
897 case CK_IntegralToFloating:975 case CK_IntegralToFloating:
898 zig_panic("TODO handle C translation cast CK_IntegralToFloating");976 emit_warning(c, stmt->getLocStart(), "TODO handle C translation cast CK_IntegralToFloating");
977 return nullptr;
899 case CK_FloatingToIntegral:978 case CK_FloatingToIntegral:
900 zig_panic("TODO handle C translation cast CK_FloatingToIntegral");979 emit_warning(c, stmt->getLocStart(), "TODO handle C translation cast CK_FloatingToIntegral");
980 return nullptr;
901 case CK_FloatingToBoolean:981 case CK_FloatingToBoolean:
902 zig_panic("TODO handle C translation cast CK_FloatingToBoolean");982 emit_warning(c, stmt->getLocStart(), "TODO handle C translation cast CK_FloatingToBoolean");
983 return nullptr;
903 case CK_BooleanToSignedIntegral:984 case CK_BooleanToSignedIntegral:
904 zig_panic("TODO handle C translation cast CK_BooleanToSignedIntegral");985 emit_warning(c, stmt->getLocStart(), "TODO handle C translation cast CK_BooleanToSignedIntegral");
986 return nullptr;
905 case CK_FloatingCast:987 case CK_FloatingCast:
906 zig_panic("TODO handle C translation cast CK_FloatingCast");988 emit_warning(c, stmt->getLocStart(), "TODO handle C translation cast CK_FloatingCast");
989 return nullptr;
907 case CK_CPointerToObjCPointerCast:990 case CK_CPointerToObjCPointerCast:
908 zig_panic("TODO handle C translation cast CK_CPointerToObjCPointerCast");991 emit_warning(c, stmt->getLocStart(), "TODO handle C translation cast CK_CPointerToObjCPointerCast");
992 return nullptr;
909 case CK_BlockPointerToObjCPointerCast:993 case CK_BlockPointerToObjCPointerCast:
910 zig_panic("TODO handle C translation cast CK_BlockPointerToObjCPointerCast");994 emit_warning(c, stmt->getLocStart(), "TODO handle C translation cast CK_BlockPointerToObjCPointerCast");
995 return nullptr;
911 case CK_AnyPointerToBlockPointerCast:996 case CK_AnyPointerToBlockPointerCast:
912 zig_panic("TODO handle C translation cast CK_AnyPointerToBlockPointerCast");997 emit_warning(c, stmt->getLocStart(), "TODO handle C translation cast CK_AnyPointerToBlockPointerCast");
998 return nullptr;
913 case CK_ObjCObjectLValueCast:999 case CK_ObjCObjectLValueCast:
914 zig_panic("TODO handle C translation cast CK_ObjCObjectLValueCast");1000 emit_warning(c, stmt->getLocStart(), "TODO handle C translation cast CK_ObjCObjectLValueCast");
1001 return nullptr;
915 case CK_FloatingRealToComplex:1002 case CK_FloatingRealToComplex:
916 zig_panic("TODO handle C translation cast CK_FloatingRealToComplex");1003 emit_warning(c, stmt->getLocStart(), "TODO handle C translation cast CK_FloatingRealToComplex");
1004 return nullptr;
917 case CK_FloatingComplexToReal:1005 case CK_FloatingComplexToReal:
918 zig_panic("TODO handle C translation cast CK_FloatingComplexToReal");1006 emit_warning(c, stmt->getLocStart(), "TODO handle C translation cast CK_FloatingComplexToReal");
1007 return nullptr;
919 case CK_FloatingComplexToBoolean:1008 case CK_FloatingComplexToBoolean:
920 zig_panic("TODO handle C translation cast CK_FloatingComplexToBoolean");1009 emit_warning(c, stmt->getLocStart(), "TODO handle C translation cast CK_FloatingComplexToBoolean");
1010 return nullptr;
921 case CK_FloatingComplexCast:1011 case CK_FloatingComplexCast:
922 zig_panic("TODO handle C translation cast CK_FloatingComplexCast");1012 emit_warning(c, stmt->getLocStart(), "TODO handle C translation cast CK_FloatingComplexCast");
1013 return nullptr;
923 case CK_FloatingComplexToIntegralComplex:1014 case CK_FloatingComplexToIntegralComplex:
924 zig_panic("TODO handle C translation cast CK_FloatingComplexToIntegralComplex");1015 emit_warning(c, stmt->getLocStart(), "TODO handle C translation cast CK_FloatingComplexToIntegralComplex");
1016 return nullptr;
925 case CK_IntegralRealToComplex:1017 case CK_IntegralRealToComplex:
926 zig_panic("TODO handle C translation cast CK_IntegralRealToComplex");1018 emit_warning(c, stmt->getLocStart(), "TODO handle C translation cast CK_IntegralRealToComplex");
1019 return nullptr;
927 case CK_IntegralComplexToReal:1020 case CK_IntegralComplexToReal:
928 zig_panic("TODO handle C translation cast CK_IntegralComplexToReal");1021 emit_warning(c, stmt->getLocStart(), "TODO handle C translation cast CK_IntegralComplexToReal");
1022 return nullptr;
929 case CK_IntegralComplexToBoolean:1023 case CK_IntegralComplexToBoolean:
930 zig_panic("TODO handle C translation cast CK_IntegralComplexToBoolean");1024 emit_warning(c, stmt->getLocStart(), "TODO handle C translation cast CK_IntegralComplexToBoolean");
1025 return nullptr;
931 case CK_IntegralComplexCast:1026 case CK_IntegralComplexCast:
932 zig_panic("TODO handle C translation cast CK_IntegralComplexCast");1027 emit_warning(c, stmt->getLocStart(), "TODO handle C translation cast CK_IntegralComplexCast");
1028 return nullptr;
933 case CK_IntegralComplexToFloatingComplex:1029 case CK_IntegralComplexToFloatingComplex:
934 zig_panic("TODO handle C translation cast CK_IntegralComplexToFloatingComplex");1030 emit_warning(c, stmt->getLocStart(), "TODO handle C translation cast CK_IntegralComplexToFloatingComplex");
1031 return nullptr;
935 case CK_ARCProduceObject:1032 case CK_ARCProduceObject:
936 zig_panic("TODO handle C translation cast CK_ARCProduceObject");1033 emit_warning(c, stmt->getLocStart(), "TODO handle C translation cast CK_ARCProduceObject");
1034 return nullptr;
937 case CK_ARCConsumeObject:1035 case CK_ARCConsumeObject:
938 zig_panic("TODO handle C translation cast CK_ARCConsumeObject");1036 emit_warning(c, stmt->getLocStart(), "TODO handle C translation cast CK_ARCConsumeObject");
1037 return nullptr;
939 case CK_ARCReclaimReturnedObject:1038 case CK_ARCReclaimReturnedObject:
940 zig_panic("TODO handle C translation cast CK_ARCReclaimReturnedObject");1039 emit_warning(c, stmt->getLocStart(), "TODO handle C translation cast CK_ARCReclaimReturnedObject");
1040 return nullptr;
941 case CK_ARCExtendBlockObject:1041 case CK_ARCExtendBlockObject:
942 zig_panic("TODO handle C translation cast CK_ARCExtendBlockObject");1042 emit_warning(c, stmt->getLocStart(), "TODO handle C translation cast CK_ARCExtendBlockObject");
1043 return nullptr;
943 case CK_AtomicToNonAtomic:1044 case CK_AtomicToNonAtomic:
944 zig_panic("TODO handle C translation cast CK_AtomicToNonAtomic");1045 emit_warning(c, stmt->getLocStart(), "TODO handle C translation cast CK_AtomicToNonAtomic");
1046 return nullptr;
945 case CK_NonAtomicToAtomic:1047 case CK_NonAtomicToAtomic:
946 zig_panic("TODO handle C translation cast CK_NonAtomicToAtomic");1048 emit_warning(c, stmt->getLocStart(), "TODO handle C translation cast CK_NonAtomicToAtomic");
1049 return nullptr;
947 case CK_CopyAndAutoreleaseBlockObject:1050 case CK_CopyAndAutoreleaseBlockObject:
948 zig_panic("TODO handle C translation cast CK_CopyAndAutoreleaseBlockObject");1051 emit_warning(c, stmt->getLocStart(), "TODO handle C translation cast CK_CopyAndAutoreleaseBlockObject");
1052 return nullptr;
949 case CK_BuiltinFnToFnPtr:1053 case CK_BuiltinFnToFnPtr:
950 zig_panic("TODO handle C translation cast CK_BuiltinFnToFnPtr");1054 emit_warning(c, stmt->getLocStart(), "TODO handle C translation cast CK_BuiltinFnToFnPtr");
1055 return nullptr;
951 case CK_ZeroToOCLEvent:1056 case CK_ZeroToOCLEvent:
952 zig_panic("TODO handle C translation cast CK_ZeroToOCLEvent");1057 emit_warning(c, stmt->getLocStart(), "TODO handle C translation cast CK_ZeroToOCLEvent");
1058 return nullptr;
953 case CK_ZeroToOCLQueue:1059 case CK_ZeroToOCLQueue:
954 zig_panic("TODO handle C translation cast CK_ZeroToOCLQueue");1060 emit_warning(c, stmt->getLocStart(), "TODO handle C translation cast CK_ZeroToOCLQueue");
1061 return nullptr;
955 case CK_AddressSpaceConversion:1062 case CK_AddressSpaceConversion:
956 zig_panic("TODO handle C translation cast CK_AddressSpaceConversion");1063 emit_warning(c, stmt->getLocStart(), "TODO handle C translation cast CK_AddressSpaceConversion");
1064 return nullptr;
957 case CK_IntToOCLSampler:1065 case CK_IntToOCLSampler:
958 zig_panic("TODO handle C translation cast CK_IntToOCLSampler");1066 emit_warning(c, stmt->getLocStart(), "TODO handle C translation cast CK_IntToOCLSampler");
1067 return nullptr;
959 }1068 }
960 zig_unreachable();1069 zig_unreachable();
961}1070}
9621071
963static AstNode * trans_decl_ref_expr(Context *c, DeclRefExpr *stmt) {1072static AstNode *trans_decl_ref_expr(Context *c, DeclRefExpr *stmt) {
964 ValueDecl *value_decl = stmt->getDecl();1073 ValueDecl *value_decl = stmt->getDecl();
965 const char *name = decl_name(value_decl);1074 const char *name = decl_name(value_decl);
9661075 return trans_create_node_symbol_str(c, name);
967 AstNode *node = trans_create_node(c, NodeTypeSymbol);
968 node->data.symbol_expr.symbol = buf_create_from_str(name);
969 return node;
970}1076}
9711077
972static AstNode * trans_unary_operator(Context *c, AstNode *block, UnaryOperator *stmt) {1078static AstNode *trans_unary_operator(Context *c, AstNode *block, UnaryOperator *stmt) {
973 switch (stmt->getOpcode()) {1079 switch (stmt->getOpcode()) {
974 case UO_PostInc:1080 case UO_PostInc:
975 zig_panic("TODO handle C translation UO_PostInc");1081 emit_warning(c, stmt->getLocStart(), "TODO handle C translation UO_PostInc");
1082 return nullptr;
976 case UO_PostDec:1083 case UO_PostDec:
977 zig_panic("TODO handle C translation UO_PostDec");1084 emit_warning(c, stmt->getLocStart(), "TODO handle C translation UO_PostDec");
1085 return nullptr;
978 case UO_PreInc:1086 case UO_PreInc:
979 zig_panic("TODO handle C translation UO_PreInc");1087 emit_warning(c, stmt->getLocStart(), "TODO handle C translation UO_PreInc");
1088 return nullptr;
980 case UO_PreDec:1089 case UO_PreDec:
981 zig_panic("TODO handle C translation UO_PreDec");1090 emit_warning(c, stmt->getLocStart(), "TODO handle C translation UO_PreDec");
1091 return nullptr;
982 case UO_AddrOf:1092 case UO_AddrOf:
983 zig_panic("TODO handle C translation UO_AddrOf");1093 emit_warning(c, stmt->getLocStart(), "TODO handle C translation UO_AddrOf");
1094 return nullptr;
984 case UO_Deref:1095 case UO_Deref:
985 zig_panic("TODO handle C translation UO_Deref");1096 emit_warning(c, stmt->getLocStart(), "TODO handle C translation UO_Deref");
1097 return nullptr;
986 case UO_Plus:1098 case UO_Plus:
987 zig_panic("TODO handle C translation UO_Plus");1099 emit_warning(c, stmt->getLocStart(), "TODO handle C translation UO_Plus");
1100 return nullptr;
988 case UO_Minus:1101 case UO_Minus:
989 {1102 {
990 Expr *op_expr = stmt->getSubExpr();1103 Expr *op_expr = stmt->getSubExpr();
991 if (c_is_signed_integer(c, op_expr->getType()) || c_is_float(c, op_expr->getType())) {1104 if (c_is_signed_integer(c, op_expr->getType()) || c_is_float(c, op_expr->getType())) {
992 AstNode *node = trans_create_node(c, NodeTypePrefixOpExpr);1105 AstNode *node = trans_create_node(c, NodeTypePrefixOpExpr);
993 node->data.prefix_op_expr.prefix_op = PrefixOpNegation;1106 node->data.prefix_op_expr.prefix_op = PrefixOpNegation;
1107
994 node->data.prefix_op_expr.primary_expr = trans_expr(c, block, op_expr);1108 node->data.prefix_op_expr.primary_expr = trans_expr(c, block, op_expr);
1109 if (node->data.prefix_op_expr.primary_expr == nullptr)
1110 return nullptr;
1111
995 return node;1112 return node;
996 } else if (c_is_unsigned_integer(c, op_expr->getType())) {1113 } else if (c_is_unsigned_integer(c, op_expr->getType())) {
997 // we gotta emit 0 -% x1114 // we gotta emit 0 -% x
998 AstNode *node = trans_create_node(c, NodeTypeBinOpExpr);1115 AstNode *node = trans_create_node(c, NodeTypeBinOpExpr);
999 node->data.bin_op_expr.op1 = trans_create_node_unsigned(c, 0);1116 node->data.bin_op_expr.op1 = trans_create_node_unsigned(c, 0);
1117
1000 node->data.bin_op_expr.op2 = trans_expr(c, block, op_expr);1118 node->data.bin_op_expr.op2 = trans_expr(c, block, op_expr);
1119 if (node->data.bin_op_expr.op2 == nullptr)
1120 return nullptr;
1121
1001 node->data.bin_op_expr.bin_op = BinOpTypeSubWrap;1122 node->data.bin_op_expr.bin_op = BinOpTypeSubWrap;
1002 return node;1123 return node;
1003 } else {1124 } else {
1004 zig_panic("TODO translate C negation with non float non integer");1125 emit_warning(c, stmt->getLocStart(), "C negation with non float non integer");
1126 return nullptr;
1005 }1127 }
1006 }1128 }
1007 case UO_Not:1129 case UO_Not:
1008 zig_panic("TODO handle C translation UO_Not");1130 emit_warning(c, stmt->getLocStart(), "TODO handle C translation UO_Not");
1131 return nullptr;
1009 case UO_LNot:1132 case UO_LNot:
1010 zig_panic("TODO handle C translation UO_LNot");1133 emit_warning(c, stmt->getLocStart(), "TODO handle C translation UO_LNot");
1134 return nullptr;
1011 case UO_Real:1135 case UO_Real:
1012 zig_panic("TODO handle C translation UO_Real");1136 emit_warning(c, stmt->getLocStart(), "TODO handle C translation UO_Real");
1137 return nullptr;
1013 case UO_Imag:1138 case UO_Imag:
1014 zig_panic("TODO handle C translation UO_Imag");1139 emit_warning(c, stmt->getLocStart(), "TODO handle C translation UO_Imag");
1140 return nullptr;
1015 case UO_Extension:1141 case UO_Extension:
1016 zig_panic("TODO handle C translation UO_Extension");1142 emit_warning(c, stmt->getLocStart(), "TODO handle C translation UO_Extension");
1143 return nullptr;
1017 case UO_Coawait:1144 case UO_Coawait:
1018 zig_panic("TODO handle C translation UO_Coawait");1145 emit_warning(c, stmt->getLocStart(), "TODO handle C translation UO_Coawait");
1146 return nullptr;
1019 }1147 }
1020 zig_unreachable();1148 zig_unreachable();
1021}1149}
10221150
1023static AstNode * trans_local_declaration(Context *c, AstNode *block, DeclStmt *stmt) {1151static AstNode *trans_local_declaration(Context *c, AstNode *block, DeclStmt *stmt) {
1024 for (auto iter = stmt->decl_begin(); iter != stmt->decl_end(); iter++) {1152 for (auto iter = stmt->decl_begin(); iter != stmt->decl_end(); iter++) {
1025 Decl *decl = *iter;1153 Decl *decl = *iter;
1026 switch (decl->getKind()) {1154 switch (decl->getKind()) {
1027 case Decl::Var: {1155 case Decl::Var: {
1028 VarDecl *var_decl = (VarDecl *)decl;1156 VarDecl *var_decl = (VarDecl *)decl;
1029 QualType qual_type = var_decl->getTypeSourceInfo()->getType();1157 QualType qual_type = var_decl->getTypeSourceInfo()->getType();
1030 AstNode *init_node = var_decl->hasInit() ? trans_expr(c, block, var_decl->getInit()) : nullptr;1158 AstNode *init_node = nullptr;
1031 AstNode *type_node = trans_qual_type(c, qual_type, stmt->getStartLoc());1159 if (var_decl->hasInit()) {
1160 init_node = trans_expr(c, block, var_decl->getInit());
1161 if (init_node == nullptr)
1162 return nullptr;
1163
1164 }
1165 AstNode *type_node = trans_qual_type(c, qual_type, stmt->getLocStart());
1166 if (type_node == nullptr)
1167 return nullptr;
1168
1032 AstNode *node = trans_create_node_var_decl(c, qual_type.isConstQualified(),1169 AstNode *node = trans_create_node_var_decl(c, qual_type.isConstQualified(),
1033 buf_create_from_str(decl_name(var_decl)), type_node, init_node);1170 buf_create_from_str(decl_name(var_decl)), type_node, init_node);
1034 block->data.block.statements.append(node);1171 block->data.block.statements.append(node);
1035 continue;1172 continue;
1036 }1173 }
1037 case Decl::AccessSpec:1174 case Decl::AccessSpec:
1038 zig_panic("TODO handle decl kind AccessSpec");1175 emit_warning(c, stmt->getLocStart(), "TODO handle decl kind AccessSpec");
1176 return nullptr;
1039 case Decl::Block:1177 case Decl::Block:
1040 zig_panic("TODO handle decl kind Block");1178 emit_warning(c, stmt->getLocStart(), "TODO handle decl kind Block");
1179 return nullptr;
1041 case Decl::Captured:1180 case Decl::Captured:
1042 zig_panic("TODO handle decl kind Captured");1181 emit_warning(c, stmt->getLocStart(), "TODO handle decl kind Captured");
1182 return nullptr;
1043 case Decl::ClassScopeFunctionSpecialization:1183 case Decl::ClassScopeFunctionSpecialization:
1044 zig_panic("TODO handle decl kind ClassScopeFunctionSpecialization");1184 emit_warning(c, stmt->getLocStart(), "TODO handle decl kind ClassScopeFunctionSpecialization");
1185 return nullptr;
1045 case Decl::Empty:1186 case Decl::Empty:
1046 zig_panic("TODO handle decl kind Empty");1187 emit_warning(c, stmt->getLocStart(), "TODO handle decl kind Empty");
1188 return nullptr;
1047 case Decl::Export:1189 case Decl::Export:
1048 zig_panic("TODO handle decl kind Export");1190 emit_warning(c, stmt->getLocStart(), "TODO handle decl kind Export");
1191 return nullptr;
1049 case Decl::ExternCContext:1192 case Decl::ExternCContext:
1050 zig_panic("TODO handle decl kind ExternCContext");1193 emit_warning(c, stmt->getLocStart(), "TODO handle decl kind ExternCContext");
1194 return nullptr;
1051 case Decl::FileScopeAsm:1195 case Decl::FileScopeAsm:
1052 zig_panic("TODO handle decl kind FileScopeAsm");1196 emit_warning(c, stmt->getLocStart(), "TODO handle decl kind FileScopeAsm");
1197 return nullptr;
1053 case Decl::Friend:1198 case Decl::Friend:
1054 zig_panic("TODO handle decl kind Friend");1199 emit_warning(c, stmt->getLocStart(), "TODO handle decl kind Friend");
1200 return nullptr;
1055 case Decl::FriendTemplate:1201 case Decl::FriendTemplate:
1056 zig_panic("TODO handle decl kind FriendTemplate");1202 emit_warning(c, stmt->getLocStart(), "TODO handle decl kind FriendTemplate");
1203 return nullptr;
1057 case Decl::Import:1204 case Decl::Import:
1058 zig_panic("TODO handle decl kind Import");1205 emit_warning(c, stmt->getLocStart(), "TODO handle decl kind Import");
1206 return nullptr;
1059 case Decl::LinkageSpec:1207 case Decl::LinkageSpec:
1060 zig_panic("TODO handle decl kind LinkageSpec");1208 emit_warning(c, stmt->getLocStart(), "TODO handle decl kind LinkageSpec");
1209 return nullptr;
1061 case Decl::Label:1210 case Decl::Label:
1062 zig_panic("TODO handle decl kind Label");1211 emit_warning(c, stmt->getLocStart(), "TODO handle decl kind Label");
1212 return nullptr;
1063 case Decl::Namespace:1213 case Decl::Namespace:
1064 zig_panic("TODO handle decl kind Namespace");1214 emit_warning(c, stmt->getLocStart(), "TODO handle decl kind Namespace");
1215 return nullptr;
1065 case Decl::NamespaceAlias:1216 case Decl::NamespaceAlias:
1066 zig_panic("TODO handle decl kind NamespaceAlias");1217 emit_warning(c, stmt->getLocStart(), "TODO handle decl kind NamespaceAlias");
1218 return nullptr;
1067 case Decl::ObjCCompatibleAlias:1219 case Decl::ObjCCompatibleAlias:
1068 zig_panic("TODO handle decl kind ObjCCompatibleAlias");1220 emit_warning(c, stmt->getLocStart(), "TODO handle decl kind ObjCCompatibleAlias");
1221 return nullptr;
1069 case Decl::ObjCCategory:1222 case Decl::ObjCCategory:
1070 zig_panic("TODO handle decl kind ObjCCategory");1223 emit_warning(c, stmt->getLocStart(), "TODO handle decl kind ObjCCategory");
1224 return nullptr;
1071 case Decl::ObjCCategoryImpl:1225 case Decl::ObjCCategoryImpl:
1072 zig_panic("TODO handle decl kind ObjCCategoryImpl");1226 emit_warning(c, stmt->getLocStart(), "TODO handle decl kind ObjCCategoryImpl");
1227 return nullptr;
1073 case Decl::ObjCImplementation:1228 case Decl::ObjCImplementation:
1074 zig_panic("TODO handle decl kind ObjCImplementation");1229 emit_warning(c, stmt->getLocStart(), "TODO handle decl kind ObjCImplementation");
1230 return nullptr;
1075 case Decl::ObjCInterface:1231 case Decl::ObjCInterface:
1076 zig_panic("TODO handle decl kind ObjCInterface");1232 emit_warning(c, stmt->getLocStart(), "TODO handle decl kind ObjCInterface");
1233 return nullptr;
1077 case Decl::ObjCProtocol:1234 case Decl::ObjCProtocol:
1078 zig_panic("TODO handle decl kind ObjCProtocol");1235 emit_warning(c, stmt->getLocStart(), "TODO handle decl kind ObjCProtocol");
1236 return nullptr;
1079 case Decl::ObjCMethod:1237 case Decl::ObjCMethod:
1080 zig_panic("TODO handle decl kind ObjCMethod");1238 emit_warning(c, stmt->getLocStart(), "TODO handle decl kind ObjCMethod");
1239 return nullptr;
1081 case Decl::ObjCProperty:1240 case Decl::ObjCProperty:
1082 zig_panic("TODO handle decl kind ObjCProperty");1241 emit_warning(c, stmt->getLocStart(), "TODO handle decl kind ObjCProperty");
1242 return nullptr;
1083 case Decl::BuiltinTemplate:1243 case Decl::BuiltinTemplate:
1084 zig_panic("TODO handle decl kind BuiltinTemplate");1244 emit_warning(c, stmt->getLocStart(), "TODO handle decl kind BuiltinTemplate");
1245 return nullptr;
1085 case Decl::ClassTemplate:1246 case Decl::ClassTemplate:
1086 zig_panic("TODO handle decl kind ClassTemplate");1247 emit_warning(c, stmt->getLocStart(), "TODO handle decl kind ClassTemplate");
1248 return nullptr;
1087 case Decl::FunctionTemplate:1249 case Decl::FunctionTemplate:
1088 zig_panic("TODO handle decl kind FunctionTemplate");1250 emit_warning(c, stmt->getLocStart(), "TODO handle decl kind FunctionTemplate");
1251 return nullptr;
1089 case Decl::TypeAliasTemplate:1252 case Decl::TypeAliasTemplate:
1090 zig_panic("TODO handle decl kind TypeAliasTemplate");1253 emit_warning(c, stmt->getLocStart(), "TODO handle decl kind TypeAliasTemplate");
1254 return nullptr;
1091 case Decl::VarTemplate:1255 case Decl::VarTemplate:
1092 zig_panic("TODO handle decl kind VarTemplate");1256 emit_warning(c, stmt->getLocStart(), "TODO handle decl kind VarTemplate");
1257 return nullptr;
1093 case Decl::TemplateTemplateParm:1258 case Decl::TemplateTemplateParm:
1094 zig_panic("TODO handle decl kind TemplateTemplateParm");1259 emit_warning(c, stmt->getLocStart(), "TODO handle decl kind TemplateTemplateParm");
1260 return nullptr;
1095 case Decl::Enum:1261 case Decl::Enum:
1096 zig_panic("TODO handle decl kind Enum");1262 emit_warning(c, stmt->getLocStart(), "TODO handle decl kind Enum");
1263 return nullptr;
1097 case Decl::Record:1264 case Decl::Record:
1098 zig_panic("TODO handle decl kind Record");1265 emit_warning(c, stmt->getLocStart(), "TODO handle decl kind Record");
1266 return nullptr;
1099 case Decl::CXXRecord:1267 case Decl::CXXRecord:
1100 zig_panic("TODO handle decl kind CXXRecord");1268 emit_warning(c, stmt->getLocStart(), "TODO handle decl kind CXXRecord");
1269 return nullptr;
1101 case Decl::ClassTemplateSpecialization:1270 case Decl::ClassTemplateSpecialization:
1102 zig_panic("TODO handle decl kind ClassTemplateSpecialization");1271 emit_warning(c, stmt->getLocStart(), "TODO handle decl kind ClassTemplateSpecialization");
1272 return nullptr;
1103 case Decl::ClassTemplatePartialSpecialization:1273 case Decl::ClassTemplatePartialSpecialization:
1104 zig_panic("TODO handle decl kind ClassTemplatePartialSpecialization");1274 emit_warning(c, stmt->getLocStart(), "TODO handle decl kind ClassTemplatePartialSpecialization");
1275 return nullptr;
1105 case Decl::TemplateTypeParm:1276 case Decl::TemplateTypeParm:
1106 zig_panic("TODO handle decl kind TemplateTypeParm");1277 emit_warning(c, stmt->getLocStart(), "TODO handle decl kind TemplateTypeParm");
1278 return nullptr;
1107 case Decl::ObjCTypeParam:1279 case Decl::ObjCTypeParam:
1108 zig_panic("TODO handle decl kind ObjCTypeParam");1280 emit_warning(c, stmt->getLocStart(), "TODO handle decl kind ObjCTypeParam");
1281 return nullptr;
1109 case Decl::TypeAlias:1282 case Decl::TypeAlias:
1110 zig_panic("TODO handle decl kind TypeAlias");1283 emit_warning(c, stmt->getLocStart(), "TODO handle decl kind TypeAlias");
1284 return nullptr;
1111 case Decl::Typedef:1285 case Decl::Typedef:
1112 zig_panic("TODO handle decl kind Typedef");1286 emit_warning(c, stmt->getLocStart(), "TODO handle decl kind Typedef");
1287 return nullptr;
1113 case Decl::UnresolvedUsingTypename:1288 case Decl::UnresolvedUsingTypename:
1114 zig_panic("TODO handle decl kind UnresolvedUsingTypename");1289 emit_warning(c, stmt->getLocStart(), "TODO handle decl kind UnresolvedUsingTypename");
1290 return nullptr;
1115 case Decl::Using:1291 case Decl::Using:
1116 zig_panic("TODO handle decl kind Using");1292 emit_warning(c, stmt->getLocStart(), "TODO handle decl kind Using");
1293 return nullptr;
1117 case Decl::UsingDirective:1294 case Decl::UsingDirective:
1118 zig_panic("TODO handle decl kind UsingDirective");1295 emit_warning(c, stmt->getLocStart(), "TODO handle decl kind UsingDirective");
1296 return nullptr;
1119 case Decl::UsingPack:1297 case Decl::UsingPack:
1120 zig_panic("TODO handle decl kind UsingPack");1298 emit_warning(c, stmt->getLocStart(), "TODO handle decl kind UsingPack");
1299 return nullptr;
1121 case Decl::UsingShadow:1300 case Decl::UsingShadow:
1122 zig_panic("TODO handle decl kind UsingShadow");1301 emit_warning(c, stmt->getLocStart(), "TODO handle decl kind UsingShadow");
1302 return nullptr;
1123 case Decl::ConstructorUsingShadow:1303 case Decl::ConstructorUsingShadow:
1124 zig_panic("TODO handle decl kind ConstructorUsingShadow");1304 emit_warning(c, stmt->getLocStart(), "TODO handle decl kind ConstructorUsingShadow");
1305 return nullptr;
1125 case Decl::Binding:1306 case Decl::Binding:
1126 zig_panic("TODO handle decl kind Binding");1307 emit_warning(c, stmt->getLocStart(), "TODO handle decl kind Binding");
1308 return nullptr;
1127 case Decl::Field:1309 case Decl::Field:
1128 zig_panic("TODO handle decl kind Field");1310 emit_warning(c, stmt->getLocStart(), "TODO handle decl kind Field");
1311 return nullptr;
1129 case Decl::ObjCAtDefsField:1312 case Decl::ObjCAtDefsField:
1130 zig_panic("TODO handle decl kind ObjCAtDefsField");1313 emit_warning(c, stmt->getLocStart(), "TODO handle decl kind ObjCAtDefsField");
1314 return nullptr;
1131 case Decl::ObjCIvar:1315 case Decl::ObjCIvar:
1132 zig_panic("TODO handle decl kind ObjCIvar");1316 emit_warning(c, stmt->getLocStart(), "TODO handle decl kind ObjCIvar");
1317 return nullptr;
1133 case Decl::Function:1318 case Decl::Function:
1134 zig_panic("TODO handle decl kind Function");1319 emit_warning(c, stmt->getLocStart(), "TODO handle decl kind Function");
1320 return nullptr;
1135 case Decl::CXXDeductionGuide:1321 case Decl::CXXDeductionGuide:
1136 zig_panic("TODO handle decl kind CXXDeductionGuide");1322 emit_warning(c, stmt->getLocStart(), "TODO handle decl kind CXXDeductionGuide");
1323 return nullptr;
1137 case Decl::CXXMethod:1324 case Decl::CXXMethod:
1138 zig_panic("TODO handle decl kind CXXMethod");1325 emit_warning(c, stmt->getLocStart(), "TODO handle decl kind CXXMethod");
1326 return nullptr;
1139 case Decl::CXXConstructor:1327 case Decl::CXXConstructor:
1140 zig_panic("TODO handle decl kind CXXConstructor");1328 emit_warning(c, stmt->getLocStart(), "TODO handle decl kind CXXConstructor");
1329 return nullptr;
1141 case Decl::CXXConversion:1330 case Decl::CXXConversion:
1142 zig_panic("TODO handle decl kind CXXConversion");1331 emit_warning(c, stmt->getLocStart(), "TODO handle decl kind CXXConversion");
1332 return nullptr;
1143 case Decl::CXXDestructor:1333 case Decl::CXXDestructor:
1144 zig_panic("TODO handle decl kind CXXDestructor");1334 emit_warning(c, stmt->getLocStart(), "TODO handle decl kind CXXDestructor");
1335 return nullptr;
1145 case Decl::MSProperty:1336 case Decl::MSProperty:
1146 zig_panic("TODO handle decl kind MSProperty");1337 emit_warning(c, stmt->getLocStart(), "TODO handle decl kind MSProperty");
1338 return nullptr;
1147 case Decl::NonTypeTemplateParm:1339 case Decl::NonTypeTemplateParm:
1148 zig_panic("TODO handle decl kind NonTypeTemplateParm");1340 emit_warning(c, stmt->getLocStart(), "TODO handle decl kind NonTypeTemplateParm");
1341 return nullptr;
1149 case Decl::Decomposition:1342 case Decl::Decomposition:
1150 zig_panic("TODO handle decl kind Decomposition");1343 emit_warning(c, stmt->getLocStart(), "TODO handle decl kind Decomposition");
1344 return nullptr;
1151 case Decl::ImplicitParam:1345 case Decl::ImplicitParam:
1152 zig_panic("TODO handle decl kind ImplicitParam");1346 emit_warning(c, stmt->getLocStart(), "TODO handle decl kind ImplicitParam");
1347 return nullptr;
1153 case Decl::OMPCapturedExpr:1348 case Decl::OMPCapturedExpr:
1154 zig_panic("TODO handle decl kind OMPCapturedExpr");1349 emit_warning(c, stmt->getLocStart(), "TODO handle decl kind OMPCapturedExpr");
1350 return nullptr;
1155 case Decl::ParmVar:1351 case Decl::ParmVar:
1156 zig_panic("TODO handle decl kind ParmVar");1352 emit_warning(c, stmt->getLocStart(), "TODO handle decl kind ParmVar");
1353 return nullptr;
1157 case Decl::VarTemplateSpecialization:1354 case Decl::VarTemplateSpecialization:
1158 zig_panic("TODO handle decl kind VarTemplateSpecialization");1355 emit_warning(c, stmt->getLocStart(), "TODO handle decl kind VarTemplateSpecialization");
1356 return nullptr;
1159 case Decl::VarTemplatePartialSpecialization:1357 case Decl::VarTemplatePartialSpecialization:
1160 zig_panic("TODO handle decl kind VarTemplatePartialSpecialization");1358 emit_warning(c, stmt->getLocStart(), "TODO handle decl kind VarTemplatePartialSpecialization");
1359 return nullptr;
1161 case Decl::EnumConstant:1360 case Decl::EnumConstant:
1162 zig_panic("TODO handle decl kind EnumConstant");1361 emit_warning(c, stmt->getLocStart(), "TODO handle decl kind EnumConstant");
1362 return nullptr;
1163 case Decl::IndirectField:1363 case Decl::IndirectField:
1164 zig_panic("TODO handle decl kind IndirectField");1364 emit_warning(c, stmt->getLocStart(), "TODO handle decl kind IndirectField");
1365 return nullptr;
1165 case Decl::OMPDeclareReduction:1366 case Decl::OMPDeclareReduction:
1166 zig_panic("TODO handle decl kind OMPDeclareReduction");1367 emit_warning(c, stmt->getLocStart(), "TODO handle decl kind OMPDeclareReduction");
1368 return nullptr;
1167 case Decl::UnresolvedUsingValue:1369 case Decl::UnresolvedUsingValue:
1168 zig_panic("TODO handle decl kind UnresolvedUsingValue");1370 emit_warning(c, stmt->getLocStart(), "TODO handle decl kind UnresolvedUsingValue");
1371 return nullptr;
1169 case Decl::OMPThreadPrivate:1372 case Decl::OMPThreadPrivate:
1170 zig_panic("TODO handle decl kind OMPThreadPrivate");1373 emit_warning(c, stmt->getLocStart(), "TODO handle decl kind OMPThreadPrivate");
1374 return nullptr;
1171 case Decl::ObjCPropertyImpl:1375 case Decl::ObjCPropertyImpl:
1172 zig_panic("TODO handle decl kind ObjCPropertyImpl");1376 emit_warning(c, stmt->getLocStart(), "TODO handle decl kind ObjCPropertyImpl");
1377 return nullptr;
1173 case Decl::PragmaComment:1378 case Decl::PragmaComment:
1174 zig_panic("TODO handle decl kind PragmaComment");1379 emit_warning(c, stmt->getLocStart(), "TODO handle decl kind PragmaComment");
1380 return nullptr;
1175 case Decl::PragmaDetectMismatch:1381 case Decl::PragmaDetectMismatch:
1176 zig_panic("TODO handle decl kind PragmaDetectMismatch");1382 emit_warning(c, stmt->getLocStart(), "TODO handle decl kind PragmaDetectMismatch");
1383 return nullptr;
1177 case Decl::StaticAssert:1384 case Decl::StaticAssert:
1178 zig_panic("TODO handle decl kind StaticAssert");1385 emit_warning(c, stmt->getLocStart(), "TODO handle decl kind StaticAssert");
1386 return nullptr;
1179 case Decl::TranslationUnit:1387 case Decl::TranslationUnit:
1180 zig_panic("TODO handle decl kind TranslationUnit");1388 emit_warning(c, stmt->getLocStart(), "TODO handle decl kind TranslationUnit");
1389 return nullptr;
1181 }1390 }
1182 zig_unreachable();1391 zig_unreachable();
1183 }1392 }
11841393
1185 // declarations were already added1394 // declarations were already added
1186 return nullptr;1395 return skip_add_to_block_node;
1187}1396}
11881397
1189static AstNode *trans_while_loop(Context *c, AstNode *block, WhileStmt *stmt) {1398static AstNode *trans_while_loop(Context *c, AstNode *block, WhileStmt *stmt) {
1190 AstNode *while_node = trans_create_node(c, NodeTypeWhileExpr);1399 AstNode *while_node = trans_create_node(c, NodeTypeWhileExpr);
1400
1191 while_node->data.while_expr.condition = trans_expr(c, block, stmt->getCond());1401 while_node->data.while_expr.condition = trans_expr(c, block, stmt->getCond());
1402 if (while_node->data.while_expr.condition == nullptr)
1403 return nullptr;
1404
1192 while_node->data.while_expr.body = trans_stmt(c, block, stmt->getBody());1405 while_node->data.while_expr.body = trans_stmt(c, block, stmt->getBody());
1406 if (while_node->data.while_expr.body == nullptr)
1407 return nullptr;
1408
1193 return while_node;1409 return while_node;
1194}1410}
11951411
...@@ -1217,375 +1433,560 @@ static AstNode *trans_stmt(Context *c, AstNode *block, Stmt *stmt) {...@@ -1217,375 +1433,560 @@ static AstNode *trans_stmt(Context *c, AstNode *block, Stmt *stmt) {
1217 case Stmt::WhileStmtClass:1433 case Stmt::WhileStmtClass:
1218 return trans_while_loop(c, block, (WhileStmt *)stmt);1434 return trans_while_loop(c, block, (WhileStmt *)stmt);
1219 case Stmt::CaseStmtClass:1435 case Stmt::CaseStmtClass:
1220 zig_panic("TODO handle C CaseStmtClass");1436 emit_warning(c, stmt->getLocStart(), "TODO handle C CaseStmtClass");
1437 return nullptr;
1221 case Stmt::DefaultStmtClass:1438 case Stmt::DefaultStmtClass:
1222 zig_panic("TODO handle C DefaultStmtClass");1439 emit_warning(c, stmt->getLocStart(), "TODO handle C DefaultStmtClass");
1440 return nullptr;
1223 case Stmt::SwitchStmtClass:1441 case Stmt::SwitchStmtClass:
1224 zig_panic("TODO handle C SwitchStmtClass");1442 emit_warning(c, stmt->getLocStart(), "TODO handle C SwitchStmtClass");
1443 return nullptr;
1225 case Stmt::NoStmtClass:1444 case Stmt::NoStmtClass:
1226 zig_panic("TODO handle C NoStmtClass");1445 emit_warning(c, stmt->getLocStart(), "TODO handle C NoStmtClass");
1446 return nullptr;
1227 case Stmt::GCCAsmStmtClass:1447 case Stmt::GCCAsmStmtClass:
1228 zig_panic("TODO handle C GCCAsmStmtClass");1448 emit_warning(c, stmt->getLocStart(), "TODO handle C GCCAsmStmtClass");
1449 return nullptr;
1229 case Stmt::MSAsmStmtClass:1450 case Stmt::MSAsmStmtClass:
1230 zig_panic("TODO handle C MSAsmStmtClass");1451 emit_warning(c, stmt->getLocStart(), "TODO handle C MSAsmStmtClass");
1452 return nullptr;
1231 case Stmt::AttributedStmtClass:1453 case Stmt::AttributedStmtClass:
1232 zig_panic("TODO handle C AttributedStmtClass");1454 emit_warning(c, stmt->getLocStart(), "TODO handle C AttributedStmtClass");
1455 return nullptr;
1233 case Stmt::BreakStmtClass:1456 case Stmt::BreakStmtClass:
1234 zig_panic("TODO handle C BreakStmtClass");1457 emit_warning(c, stmt->getLocStart(), "TODO handle C BreakStmtClass");
1458 return nullptr;
1235 case Stmt::CXXCatchStmtClass:1459 case Stmt::CXXCatchStmtClass:
1236 zig_panic("TODO handle C CXXCatchStmtClass");1460 emit_warning(c, stmt->getLocStart(), "TODO handle C CXXCatchStmtClass");
1461 return nullptr;
1237 case Stmt::CXXForRangeStmtClass:1462 case Stmt::CXXForRangeStmtClass:
1238 zig_panic("TODO handle C CXXForRangeStmtClass");1463 emit_warning(c, stmt->getLocStart(), "TODO handle C CXXForRangeStmtClass");
1464 return nullptr;
1239 case Stmt::CXXTryStmtClass:1465 case Stmt::CXXTryStmtClass:
1240 zig_panic("TODO handle C CXXTryStmtClass");1466 emit_warning(c, stmt->getLocStart(), "TODO handle C CXXTryStmtClass");
1467 return nullptr;
1241 case Stmt::CapturedStmtClass:1468 case Stmt::CapturedStmtClass:
1242 zig_panic("TODO handle C CapturedStmtClass");1469 emit_warning(c, stmt->getLocStart(), "TODO handle C CapturedStmtClass");
1470 return nullptr;
1243 case Stmt::ContinueStmtClass:1471 case Stmt::ContinueStmtClass:
1244 zig_panic("TODO handle C ContinueStmtClass");1472 emit_warning(c, stmt->getLocStart(), "TODO handle C ContinueStmtClass");
1473 return nullptr;
1245 case Stmt::CoreturnStmtClass:1474 case Stmt::CoreturnStmtClass:
1246 zig_panic("TODO handle C CoreturnStmtClass");1475 emit_warning(c, stmt->getLocStart(), "TODO handle C CoreturnStmtClass");
1476 return nullptr;
1247 case Stmt::CoroutineBodyStmtClass:1477 case Stmt::CoroutineBodyStmtClass:
1248 zig_panic("TODO handle C CoroutineBodyStmtClass");1478 emit_warning(c, stmt->getLocStart(), "TODO handle C CoroutineBodyStmtClass");
1479 return nullptr;
1249 case Stmt::DoStmtClass:1480 case Stmt::DoStmtClass:
1250 zig_panic("TODO handle C DoStmtClass");1481 emit_warning(c, stmt->getLocStart(), "TODO handle C DoStmtClass");
1482 return nullptr;
1251 case Stmt::BinaryConditionalOperatorClass:1483 case Stmt::BinaryConditionalOperatorClass:
1252 zig_panic("TODO handle C BinaryConditionalOperatorClass");1484 emit_warning(c, stmt->getLocStart(), "TODO handle C BinaryConditionalOperatorClass");
1485 return nullptr;
1253 case Stmt::AddrLabelExprClass:1486 case Stmt::AddrLabelExprClass:
1254 zig_panic("TODO handle C AddrLabelExprClass");1487 emit_warning(c, stmt->getLocStart(), "TODO handle C AddrLabelExprClass");
1488 return nullptr;
1255 case Stmt::ArrayInitIndexExprClass:1489 case Stmt::ArrayInitIndexExprClass:
1256 zig_panic("TODO handle C ArrayInitIndexExprClass");1490 emit_warning(c, stmt->getLocStart(), "TODO handle C ArrayInitIndexExprClass");
1491 return nullptr;
1257 case Stmt::ArrayInitLoopExprClass:1492 case Stmt::ArrayInitLoopExprClass:
1258 zig_panic("TODO handle C ArrayInitLoopExprClass");1493 emit_warning(c, stmt->getLocStart(), "TODO handle C ArrayInitLoopExprClass");
1494 return nullptr;
1259 case Stmt::ArraySubscriptExprClass:1495 case Stmt::ArraySubscriptExprClass:
1260 zig_panic("TODO handle C ArraySubscriptExprClass");1496 emit_warning(c, stmt->getLocStart(), "TODO handle C ArraySubscriptExprClass");
1497 return nullptr;
1261 case Stmt::ArrayTypeTraitExprClass:1498 case Stmt::ArrayTypeTraitExprClass:
1262 zig_panic("TODO handle C ArrayTypeTraitExprClass");1499 emit_warning(c, stmt->getLocStart(), "TODO handle C ArrayTypeTraitExprClass");
1500 return nullptr;
1263 case Stmt::AsTypeExprClass:1501 case Stmt::AsTypeExprClass:
1264 zig_panic("TODO handle C AsTypeExprClass");1502 emit_warning(c, stmt->getLocStart(), "TODO handle C AsTypeExprClass");
1503 return nullptr;
1265 case Stmt::AtomicExprClass:1504 case Stmt::AtomicExprClass:
1266 zig_panic("TODO handle C AtomicExprClass");1505 emit_warning(c, stmt->getLocStart(), "TODO handle C AtomicExprClass");
1506 return nullptr;
1267 case Stmt::CompoundAssignOperatorClass:1507 case Stmt::CompoundAssignOperatorClass:
1268 zig_panic("TODO handle C CompoundAssignOperatorClass");1508 emit_warning(c, stmt->getLocStart(), "TODO handle C CompoundAssignOperatorClass");
1509 return nullptr;
1269 case Stmt::BlockExprClass:1510 case Stmt::BlockExprClass:
1270 zig_panic("TODO handle C BlockExprClass");1511 emit_warning(c, stmt->getLocStart(), "TODO handle C BlockExprClass");
1512 return nullptr;
1271 case Stmt::CXXBindTemporaryExprClass:1513 case Stmt::CXXBindTemporaryExprClass:
1272 zig_panic("TODO handle C CXXBindTemporaryExprClass");1514 emit_warning(c, stmt->getLocStart(), "TODO handle C CXXBindTemporaryExprClass");
1515 return nullptr;
1273 case Stmt::CXXBoolLiteralExprClass:1516 case Stmt::CXXBoolLiteralExprClass:
1274 zig_panic("TODO handle C CXXBoolLiteralExprClass");1517 emit_warning(c, stmt->getLocStart(), "TODO handle C CXXBoolLiteralExprClass");
1518 return nullptr;
1275 case Stmt::CXXConstructExprClass:1519 case Stmt::CXXConstructExprClass:
1276 zig_panic("TODO handle C CXXConstructExprClass");1520 emit_warning(c, stmt->getLocStart(), "TODO handle C CXXConstructExprClass");
1521 return nullptr;
1277 case Stmt::CXXTemporaryObjectExprClass:1522 case Stmt::CXXTemporaryObjectExprClass:
1278 zig_panic("TODO handle C CXXTemporaryObjectExprClass");1523 emit_warning(c, stmt->getLocStart(), "TODO handle C CXXTemporaryObjectExprClass");
1524 return nullptr;
1279 case Stmt::CXXDefaultArgExprClass:1525 case Stmt::CXXDefaultArgExprClass:
1280 zig_panic("TODO handle C CXXDefaultArgExprClass");1526 emit_warning(c, stmt->getLocStart(), "TODO handle C CXXDefaultArgExprClass");
1527 return nullptr;
1281 case Stmt::CXXDefaultInitExprClass:1528 case Stmt::CXXDefaultInitExprClass:
1282 zig_panic("TODO handle C CXXDefaultInitExprClass");1529 emit_warning(c, stmt->getLocStart(), "TODO handle C CXXDefaultInitExprClass");
1530 return nullptr;
1283 case Stmt::CXXDeleteExprClass:1531 case Stmt::CXXDeleteExprClass:
1284 zig_panic("TODO handle C CXXDeleteExprClass");1532 emit_warning(c, stmt->getLocStart(), "TODO handle C CXXDeleteExprClass");
1533 return nullptr;
1285 case Stmt::CXXDependentScopeMemberExprClass:1534 case Stmt::CXXDependentScopeMemberExprClass:
1286 zig_panic("TODO handle C CXXDependentScopeMemberExprClass");1535 emit_warning(c, stmt->getLocStart(), "TODO handle C CXXDependentScopeMemberExprClass");
1536 return nullptr;
1287 case Stmt::CXXFoldExprClass:1537 case Stmt::CXXFoldExprClass:
1288 zig_panic("TODO handle C CXXFoldExprClass");1538 emit_warning(c, stmt->getLocStart(), "TODO handle C CXXFoldExprClass");
1539 return nullptr;
1289 case Stmt::CXXInheritedCtorInitExprClass:1540 case Stmt::CXXInheritedCtorInitExprClass:
1290 zig_panic("TODO handle C CXXInheritedCtorInitExprClass");1541 emit_warning(c, stmt->getLocStart(), "TODO handle C CXXInheritedCtorInitExprClass");
1542 return nullptr;
1291 case Stmt::CXXNewExprClass:1543 case Stmt::CXXNewExprClass:
1292 zig_panic("TODO handle C CXXNewExprClass");1544 emit_warning(c, stmt->getLocStart(), "TODO handle C CXXNewExprClass");
1545 return nullptr;
1293 case Stmt::CXXNoexceptExprClass:1546 case Stmt::CXXNoexceptExprClass:
1294 zig_panic("TODO handle C CXXNoexceptExprClass");1547 emit_warning(c, stmt->getLocStart(), "TODO handle C CXXNoexceptExprClass");
1548 return nullptr;
1295 case Stmt::CXXNullPtrLiteralExprClass:1549 case Stmt::CXXNullPtrLiteralExprClass:
1296 zig_panic("TODO handle C CXXNullPtrLiteralExprClass");1550 emit_warning(c, stmt->getLocStart(), "TODO handle C CXXNullPtrLiteralExprClass");
1551 return nullptr;
1297 case Stmt::CXXPseudoDestructorExprClass:1552 case Stmt::CXXPseudoDestructorExprClass:
1298 zig_panic("TODO handle C CXXPseudoDestructorExprClass");1553 emit_warning(c, stmt->getLocStart(), "TODO handle C CXXPseudoDestructorExprClass");
1554 return nullptr;
1299 case Stmt::CXXScalarValueInitExprClass:1555 case Stmt::CXXScalarValueInitExprClass:
1300 zig_panic("TODO handle C CXXScalarValueInitExprClass");1556 emit_warning(c, stmt->getLocStart(), "TODO handle C CXXScalarValueInitExprClass");
1557 return nullptr;
1301 case Stmt::CXXStdInitializerListExprClass:1558 case Stmt::CXXStdInitializerListExprClass:
1302 zig_panic("TODO handle C CXXStdInitializerListExprClass");1559 emit_warning(c, stmt->getLocStart(), "TODO handle C CXXStdInitializerListExprClass");
1560 return nullptr;
1303 case Stmt::CXXThisExprClass:1561 case Stmt::CXXThisExprClass:
1304 zig_panic("TODO handle C CXXThisExprClass");1562 emit_warning(c, stmt->getLocStart(), "TODO handle C CXXThisExprClass");
1563 return nullptr;
1305 case Stmt::CXXThrowExprClass:1564 case Stmt::CXXThrowExprClass:
1306 zig_panic("TODO handle C CXXThrowExprClass");1565 emit_warning(c, stmt->getLocStart(), "TODO handle C CXXThrowExprClass");
1566 return nullptr;
1307 case Stmt::CXXTypeidExprClass:1567 case Stmt::CXXTypeidExprClass:
1308 zig_panic("TODO handle C CXXTypeidExprClass");1568 emit_warning(c, stmt->getLocStart(), "TODO handle C CXXTypeidExprClass");
1569 return nullptr;
1309 case Stmt::CXXUnresolvedConstructExprClass:1570 case Stmt::CXXUnresolvedConstructExprClass:
1310 zig_panic("TODO handle C CXXUnresolvedConstructExprClass");1571 emit_warning(c, stmt->getLocStart(), "TODO handle C CXXUnresolvedConstructExprClass");
1572 return nullptr;
1311 case Stmt::CXXUuidofExprClass:1573 case Stmt::CXXUuidofExprClass:
1312 zig_panic("TODO handle C CXXUuidofExprClass");1574 emit_warning(c, stmt->getLocStart(), "TODO handle C CXXUuidofExprClass");
1575 return nullptr;
1313 case Stmt::CallExprClass:1576 case Stmt::CallExprClass:
1314 zig_panic("TODO handle C CallExprClass");1577 emit_warning(c, stmt->getLocStart(), "TODO handle C CallExprClass");
1578 return nullptr;
1315 case Stmt::CUDAKernelCallExprClass:1579 case Stmt::CUDAKernelCallExprClass:
1316 zig_panic("TODO handle C CUDAKernelCallExprClass");1580 emit_warning(c, stmt->getLocStart(), "TODO handle C CUDAKernelCallExprClass");
1581 return nullptr;
1317 case Stmt::CXXMemberCallExprClass:1582 case Stmt::CXXMemberCallExprClass:
1318 zig_panic("TODO handle C CXXMemberCallExprClass");1583 emit_warning(c, stmt->getLocStart(), "TODO handle C CXXMemberCallExprClass");
1584 return nullptr;
1319 case Stmt::CXXOperatorCallExprClass:1585 case Stmt::CXXOperatorCallExprClass:
1320 zig_panic("TODO handle C CXXOperatorCallExprClass");1586 emit_warning(c, stmt->getLocStart(), "TODO handle C CXXOperatorCallExprClass");
1587 return nullptr;
1321 case Stmt::UserDefinedLiteralClass:1588 case Stmt::UserDefinedLiteralClass:
1322 zig_panic("TODO handle C UserDefinedLiteralClass");1589 emit_warning(c, stmt->getLocStart(), "TODO handle C UserDefinedLiteralClass");
1590 return nullptr;
1323 case Stmt::CStyleCastExprClass:1591 case Stmt::CStyleCastExprClass:
1324 zig_panic("TODO handle C CStyleCastExprClass");1592 emit_warning(c, stmt->getLocStart(), "TODO handle C CStyleCastExprClass");
1593 return nullptr;
1325 case Stmt::CXXFunctionalCastExprClass:1594 case Stmt::CXXFunctionalCastExprClass:
1326 zig_panic("TODO handle C CXXFunctionalCastExprClass");1595 emit_warning(c, stmt->getLocStart(), "TODO handle C CXXFunctionalCastExprClass");
1596 return nullptr;
1327 case Stmt::CXXConstCastExprClass:1597 case Stmt::CXXConstCastExprClass:
1328 zig_panic("TODO handle C CXXConstCastExprClass");1598 emit_warning(c, stmt->getLocStart(), "TODO handle C CXXConstCastExprClass");
1599 return nullptr;
1329 case Stmt::CXXDynamicCastExprClass:1600 case Stmt::CXXDynamicCastExprClass:
1330 zig_panic("TODO handle C CXXDynamicCastExprClass");1601 emit_warning(c, stmt->getLocStart(), "TODO handle C CXXDynamicCastExprClass");
1602 return nullptr;
1331 case Stmt::CXXReinterpretCastExprClass:1603 case Stmt::CXXReinterpretCastExprClass:
1332 zig_panic("TODO handle C CXXReinterpretCastExprClass");1604 emit_warning(c, stmt->getLocStart(), "TODO handle C CXXReinterpretCastExprClass");
1605 return nullptr;
1333 case Stmt::CXXStaticCastExprClass:1606 case Stmt::CXXStaticCastExprClass:
1334 zig_panic("TODO handle C CXXStaticCastExprClass");1607 emit_warning(c, stmt->getLocStart(), "TODO handle C CXXStaticCastExprClass");
1608 return nullptr;
1335 case Stmt::ObjCBridgedCastExprClass:1609 case Stmt::ObjCBridgedCastExprClass:
1336 zig_panic("TODO handle C ObjCBridgedCastExprClass");1610 emit_warning(c, stmt->getLocStart(), "TODO handle C ObjCBridgedCastExprClass");
1611 return nullptr;
1337 case Stmt::CharacterLiteralClass:1612 case Stmt::CharacterLiteralClass:
1338 zig_panic("TODO handle C CharacterLiteralClass");1613 emit_warning(c, stmt->getLocStart(), "TODO handle C CharacterLiteralClass");
1614 return nullptr;
1339 case Stmt::ChooseExprClass:1615 case Stmt::ChooseExprClass:
1340 zig_panic("TODO handle C ChooseExprClass");1616 emit_warning(c, stmt->getLocStart(), "TODO handle C ChooseExprClass");
1617 return nullptr;
1341 case Stmt::CompoundLiteralExprClass:1618 case Stmt::CompoundLiteralExprClass:
1342 zig_panic("TODO handle C CompoundLiteralExprClass");1619 emit_warning(c, stmt->getLocStart(), "TODO handle C CompoundLiteralExprClass");
1620 return nullptr;
1343 case Stmt::ConvertVectorExprClass:1621 case Stmt::ConvertVectorExprClass:
1344 zig_panic("TODO handle C ConvertVectorExprClass");1622 emit_warning(c, stmt->getLocStart(), "TODO handle C ConvertVectorExprClass");
1623 return nullptr;
1345 case Stmt::CoawaitExprClass:1624 case Stmt::CoawaitExprClass:
1346 zig_panic("TODO handle C CoawaitExprClass");1625 emit_warning(c, stmt->getLocStart(), "TODO handle C CoawaitExprClass");
1626 return nullptr;
1347 case Stmt::CoyieldExprClass:1627 case Stmt::CoyieldExprClass:
1348 zig_panic("TODO handle C CoyieldExprClass");1628 emit_warning(c, stmt->getLocStart(), "TODO handle C CoyieldExprClass");
1629 return nullptr;
1349 case Stmt::DependentCoawaitExprClass:1630 case Stmt::DependentCoawaitExprClass:
1350 zig_panic("TODO handle C DependentCoawaitExprClass");1631 emit_warning(c, stmt->getLocStart(), "TODO handle C DependentCoawaitExprClass");
1632 return nullptr;
1351 case Stmt::DependentScopeDeclRefExprClass:1633 case Stmt::DependentScopeDeclRefExprClass:
1352 zig_panic("TODO handle C DependentScopeDeclRefExprClass");1634 emit_warning(c, stmt->getLocStart(), "TODO handle C DependentScopeDeclRefExprClass");
1635 return nullptr;
1353 case Stmt::DesignatedInitExprClass:1636 case Stmt::DesignatedInitExprClass:
1354 zig_panic("TODO handle C DesignatedInitExprClass");1637 emit_warning(c, stmt->getLocStart(), "TODO handle C DesignatedInitExprClass");
1638 return nullptr;
1355 case Stmt::DesignatedInitUpdateExprClass:1639 case Stmt::DesignatedInitUpdateExprClass:
1356 zig_panic("TODO handle C DesignatedInitUpdateExprClass");1640 emit_warning(c, stmt->getLocStart(), "TODO handle C DesignatedInitUpdateExprClass");
1641 return nullptr;
1357 case Stmt::ExprWithCleanupsClass:1642 case Stmt::ExprWithCleanupsClass:
1358 zig_panic("TODO handle C ExprWithCleanupsClass");1643 emit_warning(c, stmt->getLocStart(), "TODO handle C ExprWithCleanupsClass");
1644 return nullptr;
1359 case Stmt::ExpressionTraitExprClass:1645 case Stmt::ExpressionTraitExprClass:
1360 zig_panic("TODO handle C ExpressionTraitExprClass");1646 emit_warning(c, stmt->getLocStart(), "TODO handle C ExpressionTraitExprClass");
1647 return nullptr;
1361 case Stmt::ExtVectorElementExprClass:1648 case Stmt::ExtVectorElementExprClass:
1362 zig_panic("TODO handle C ExtVectorElementExprClass");1649 emit_warning(c, stmt->getLocStart(), "TODO handle C ExtVectorElementExprClass");
1650 return nullptr;
1363 case Stmt::FloatingLiteralClass:1651 case Stmt::FloatingLiteralClass:
1364 zig_panic("TODO handle C FloatingLiteralClass");1652 emit_warning(c, stmt->getLocStart(), "TODO handle C FloatingLiteralClass");
1653 return nullptr;
1365 case Stmt::FunctionParmPackExprClass:1654 case Stmt::FunctionParmPackExprClass:
1366 zig_panic("TODO handle C FunctionParmPackExprClass");1655 emit_warning(c, stmt->getLocStart(), "TODO handle C FunctionParmPackExprClass");
1656 return nullptr;
1367 case Stmt::GNUNullExprClass:1657 case Stmt::GNUNullExprClass:
1368 zig_panic("TODO handle C GNUNullExprClass");1658 emit_warning(c, stmt->getLocStart(), "TODO handle C GNUNullExprClass");
1659 return nullptr;
1369 case Stmt::GenericSelectionExprClass:1660 case Stmt::GenericSelectionExprClass:
1370 zig_panic("TODO handle C GenericSelectionExprClass");1661 emit_warning(c, stmt->getLocStart(), "TODO handle C GenericSelectionExprClass");
1662 return nullptr;
1371 case Stmt::ImaginaryLiteralClass:1663 case Stmt::ImaginaryLiteralClass:
1372 zig_panic("TODO handle C ImaginaryLiteralClass");1664 emit_warning(c, stmt->getLocStart(), "TODO handle C ImaginaryLiteralClass");
1665 return nullptr;
1373 case Stmt::ImplicitValueInitExprClass:1666 case Stmt::ImplicitValueInitExprClass:
1374 zig_panic("TODO handle C ImplicitValueInitExprClass");1667 emit_warning(c, stmt->getLocStart(), "TODO handle C ImplicitValueInitExprClass");
1668 return nullptr;
1375 case Stmt::InitListExprClass:1669 case Stmt::InitListExprClass:
1376 zig_panic("TODO handle C InitListExprClass");1670 emit_warning(c, stmt->getLocStart(), "TODO handle C InitListExprClass");
1671 return nullptr;
1377 case Stmt::LambdaExprClass:1672 case Stmt::LambdaExprClass:
1378 zig_panic("TODO handle C LambdaExprClass");1673 emit_warning(c, stmt->getLocStart(), "TODO handle C LambdaExprClass");
1674 return nullptr;
1379 case Stmt::MSPropertyRefExprClass:1675 case Stmt::MSPropertyRefExprClass:
1380 zig_panic("TODO handle C MSPropertyRefExprClass");1676 emit_warning(c, stmt->getLocStart(), "TODO handle C MSPropertyRefExprClass");
1677 return nullptr;
1381 case Stmt::MSPropertySubscriptExprClass:1678 case Stmt::MSPropertySubscriptExprClass:
1382 zig_panic("TODO handle C MSPropertySubscriptExprClass");1679 emit_warning(c, stmt->getLocStart(), "TODO handle C MSPropertySubscriptExprClass");
1680 return nullptr;
1383 case Stmt::MaterializeTemporaryExprClass:1681 case Stmt::MaterializeTemporaryExprClass:
1384 zig_panic("TODO handle C MaterializeTemporaryExprClass");1682 emit_warning(c, stmt->getLocStart(), "TODO handle C MaterializeTemporaryExprClass");
1683 return nullptr;
1385 case Stmt::MemberExprClass:1684 case Stmt::MemberExprClass:
1386 zig_panic("TODO handle C MemberExprClass");1685 emit_warning(c, stmt->getLocStart(), "TODO handle C MemberExprClass");
1686 return nullptr;
1387 case Stmt::NoInitExprClass:1687 case Stmt::NoInitExprClass:
1388 zig_panic("TODO handle C NoInitExprClass");1688 emit_warning(c, stmt->getLocStart(), "TODO handle C NoInitExprClass");
1689 return nullptr;
1389 case Stmt::OMPArraySectionExprClass:1690 case Stmt::OMPArraySectionExprClass:
1390 zig_panic("TODO handle C OMPArraySectionExprClass");1691 emit_warning(c, stmt->getLocStart(), "TODO handle C OMPArraySectionExprClass");
1692 return nullptr;
1391 case Stmt::ObjCArrayLiteralClass:1693 case Stmt::ObjCArrayLiteralClass:
1392 zig_panic("TODO handle C ObjCArrayLiteralClass");1694 emit_warning(c, stmt->getLocStart(), "TODO handle C ObjCArrayLiteralClass");
1695 return nullptr;
1393 case Stmt::ObjCAvailabilityCheckExprClass:1696 case Stmt::ObjCAvailabilityCheckExprClass:
1394 zig_panic("TODO handle C ObjCAvailabilityCheckExprClass");1697 emit_warning(c, stmt->getLocStart(), "TODO handle C ObjCAvailabilityCheckExprClass");
1698 return nullptr;
1395 case Stmt::ObjCBoolLiteralExprClass:1699 case Stmt::ObjCBoolLiteralExprClass:
1396 zig_panic("TODO handle C ObjCBoolLiteralExprClass");1700 emit_warning(c, stmt->getLocStart(), "TODO handle C ObjCBoolLiteralExprClass");
1701 return nullptr;
1397 case Stmt::ObjCBoxedExprClass:1702 case Stmt::ObjCBoxedExprClass:
1398 zig_panic("TODO handle C ObjCBoxedExprClass");1703 emit_warning(c, stmt->getLocStart(), "TODO handle C ObjCBoxedExprClass");
1704 return nullptr;
1399 case Stmt::ObjCDictionaryLiteralClass:1705 case Stmt::ObjCDictionaryLiteralClass:
1400 zig_panic("TODO handle C ObjCDictionaryLiteralClass");1706 emit_warning(c, stmt->getLocStart(), "TODO handle C ObjCDictionaryLiteralClass");
1707 return nullptr;
1401 case Stmt::ObjCEncodeExprClass:1708 case Stmt::ObjCEncodeExprClass:
1402 zig_panic("TODO handle C ObjCEncodeExprClass");1709 emit_warning(c, stmt->getLocStart(), "TODO handle C ObjCEncodeExprClass");
1710 return nullptr;
1403 case Stmt::ObjCIndirectCopyRestoreExprClass:1711 case Stmt::ObjCIndirectCopyRestoreExprClass:
1404 zig_panic("TODO handle C ObjCIndirectCopyRestoreExprClass");1712 emit_warning(c, stmt->getLocStart(), "TODO handle C ObjCIndirectCopyRestoreExprClass");
1713 return nullptr;
1405 case Stmt::ObjCIsaExprClass:1714 case Stmt::ObjCIsaExprClass:
1406 zig_panic("TODO handle C ObjCIsaExprClass");1715 emit_warning(c, stmt->getLocStart(), "TODO handle C ObjCIsaExprClass");
1716 return nullptr;
1407 case Stmt::ObjCIvarRefExprClass:1717 case Stmt::ObjCIvarRefExprClass:
1408 zig_panic("TODO handle C ObjCIvarRefExprClass");1718 emit_warning(c, stmt->getLocStart(), "TODO handle C ObjCIvarRefExprClass");
1719 return nullptr;
1409 case Stmt::ObjCMessageExprClass:1720 case Stmt::ObjCMessageExprClass:
1410 zig_panic("TODO handle C ObjCMessageExprClass");1721 emit_warning(c, stmt->getLocStart(), "TODO handle C ObjCMessageExprClass");
1722 return nullptr;
1411 case Stmt::ObjCPropertyRefExprClass:1723 case Stmt::ObjCPropertyRefExprClass:
1412 zig_panic("TODO handle C ObjCPropertyRefExprClass");1724 emit_warning(c, stmt->getLocStart(), "TODO handle C ObjCPropertyRefExprClass");
1725 return nullptr;
1413 case Stmt::ObjCProtocolExprClass:1726 case Stmt::ObjCProtocolExprClass:
1414 zig_panic("TODO handle C ObjCProtocolExprClass");1727 emit_warning(c, stmt->getLocStart(), "TODO handle C ObjCProtocolExprClass");
1728 return nullptr;
1415 case Stmt::ObjCSelectorExprClass:1729 case Stmt::ObjCSelectorExprClass:
1416 zig_panic("TODO handle C ObjCSelectorExprClass");1730 emit_warning(c, stmt->getLocStart(), "TODO handle C ObjCSelectorExprClass");
1731 return nullptr;
1417 case Stmt::ObjCStringLiteralClass:1732 case Stmt::ObjCStringLiteralClass:
1418 zig_panic("TODO handle C ObjCStringLiteralClass");1733 emit_warning(c, stmt->getLocStart(), "TODO handle C ObjCStringLiteralClass");
1734 return nullptr;
1419 case Stmt::ObjCSubscriptRefExprClass:1735 case Stmt::ObjCSubscriptRefExprClass:
1420 zig_panic("TODO handle C ObjCSubscriptRefExprClass");1736 emit_warning(c, stmt->getLocStart(), "TODO handle C ObjCSubscriptRefExprClass");
1737 return nullptr;
1421 case Stmt::OffsetOfExprClass:1738 case Stmt::OffsetOfExprClass:
1422 zig_panic("TODO handle C OffsetOfExprClass");1739 emit_warning(c, stmt->getLocStart(), "TODO handle C OffsetOfExprClass");
1740 return nullptr;
1423 case Stmt::OpaqueValueExprClass:1741 case Stmt::OpaqueValueExprClass:
1424 zig_panic("TODO handle C OpaqueValueExprClass");1742 emit_warning(c, stmt->getLocStart(), "TODO handle C OpaqueValueExprClass");
1743 return nullptr;
1425 case Stmt::UnresolvedLookupExprClass:1744 case Stmt::UnresolvedLookupExprClass:
1426 zig_panic("TODO handle C UnresolvedLookupExprClass");1745 emit_warning(c, stmt->getLocStart(), "TODO handle C UnresolvedLookupExprClass");
1746 return nullptr;
1427 case Stmt::UnresolvedMemberExprClass:1747 case Stmt::UnresolvedMemberExprClass:
1428 zig_panic("TODO handle C UnresolvedMemberExprClass");1748 emit_warning(c, stmt->getLocStart(), "TODO handle C UnresolvedMemberExprClass");
1749 return nullptr;
1429 case Stmt::PackExpansionExprClass:1750 case Stmt::PackExpansionExprClass:
1430 zig_panic("TODO handle C PackExpansionExprClass");1751 emit_warning(c, stmt->getLocStart(), "TODO handle C PackExpansionExprClass");
1752 return nullptr;
1431 case Stmt::ParenExprClass:1753 case Stmt::ParenExprClass:
1432 zig_panic("TODO handle C ParenExprClass");1754 emit_warning(c, stmt->getLocStart(), "TODO handle C ParenExprClass");
1755 return nullptr;
1433 case Stmt::ParenListExprClass:1756 case Stmt::ParenListExprClass:
1434 zig_panic("TODO handle C ParenListExprClass");1757 emit_warning(c, stmt->getLocStart(), "TODO handle C ParenListExprClass");
1758 return nullptr;
1435 case Stmt::PredefinedExprClass:1759 case Stmt::PredefinedExprClass:
1436 zig_panic("TODO handle C PredefinedExprClass");1760 emit_warning(c, stmt->getLocStart(), "TODO handle C PredefinedExprClass");
1761 return nullptr;
1437 case Stmt::PseudoObjectExprClass:1762 case Stmt::PseudoObjectExprClass:
1438 zig_panic("TODO handle C PseudoObjectExprClass");1763 emit_warning(c, stmt->getLocStart(), "TODO handle C PseudoObjectExprClass");
1764 return nullptr;
1439 case Stmt::ShuffleVectorExprClass:1765 case Stmt::ShuffleVectorExprClass:
1440 zig_panic("TODO handle C ShuffleVectorExprClass");1766 emit_warning(c, stmt->getLocStart(), "TODO handle C ShuffleVectorExprClass");
1767 return nullptr;
1441 case Stmt::SizeOfPackExprClass:1768 case Stmt::SizeOfPackExprClass:
1442 zig_panic("TODO handle C SizeOfPackExprClass");1769 emit_warning(c, stmt->getLocStart(), "TODO handle C SizeOfPackExprClass");
1770 return nullptr;
1443 case Stmt::StmtExprClass:1771 case Stmt::StmtExprClass:
1444 zig_panic("TODO handle C StmtExprClass");1772 emit_warning(c, stmt->getLocStart(), "TODO handle C StmtExprClass");
1773 return nullptr;
1445 case Stmt::StringLiteralClass:1774 case Stmt::StringLiteralClass:
1446 zig_panic("TODO handle C StringLiteralClass");1775 emit_warning(c, stmt->getLocStart(), "TODO handle C StringLiteralClass");
1776 return nullptr;
1447 case Stmt::SubstNonTypeTemplateParmExprClass:1777 case Stmt::SubstNonTypeTemplateParmExprClass:
1448 zig_panic("TODO handle C SubstNonTypeTemplateParmExprClass");1778 emit_warning(c, stmt->getLocStart(), "TODO handle C SubstNonTypeTemplateParmExprClass");
1779 return nullptr;
1449 case Stmt::SubstNonTypeTemplateParmPackExprClass:1780 case Stmt::SubstNonTypeTemplateParmPackExprClass:
1450 zig_panic("TODO handle C SubstNonTypeTemplateParmPackExprClass");1781 emit_warning(c, stmt->getLocStart(), "TODO handle C SubstNonTypeTemplateParmPackExprClass");
1782 return nullptr;
1451 case Stmt::TypeTraitExprClass:1783 case Stmt::TypeTraitExprClass:
1452 zig_panic("TODO handle C TypeTraitExprClass");1784 emit_warning(c, stmt->getLocStart(), "TODO handle C TypeTraitExprClass");
1785 return nullptr;
1453 case Stmt::TypoExprClass:1786 case Stmt::TypoExprClass:
1454 zig_panic("TODO handle C TypoExprClass");1787 emit_warning(c, stmt->getLocStart(), "TODO handle C TypoExprClass");
1788 return nullptr;
1455 case Stmt::UnaryExprOrTypeTraitExprClass:1789 case Stmt::UnaryExprOrTypeTraitExprClass:
1456 zig_panic("TODO handle C UnaryExprOrTypeTraitExprClass");1790 emit_warning(c, stmt->getLocStart(), "TODO handle C UnaryExprOrTypeTraitExprClass");
1791 return nullptr;
1457 case Stmt::VAArgExprClass:1792 case Stmt::VAArgExprClass:
1458 zig_panic("TODO handle C VAArgExprClass");1793 emit_warning(c, stmt->getLocStart(), "TODO handle C VAArgExprClass");
1794 return nullptr;
1459 case Stmt::ForStmtClass:1795 case Stmt::ForStmtClass:
1460 zig_panic("TODO handle C ForStmtClass");1796 emit_warning(c, stmt->getLocStart(), "TODO handle C ForStmtClass");
1797 return nullptr;
1461 case Stmt::GotoStmtClass:1798 case Stmt::GotoStmtClass:
1462 zig_panic("TODO handle C GotoStmtClass");1799 emit_warning(c, stmt->getLocStart(), "TODO handle C GotoStmtClass");
1800 return nullptr;
1463 case Stmt::IfStmtClass:1801 case Stmt::IfStmtClass:
1464 zig_panic("TODO handle C IfStmtClass");1802 emit_warning(c, stmt->getLocStart(), "TODO handle C IfStmtClass");
1803 return nullptr;
1465 case Stmt::IndirectGotoStmtClass:1804 case Stmt::IndirectGotoStmtClass:
1466 zig_panic("TODO handle C IndirectGotoStmtClass");1805 emit_warning(c, stmt->getLocStart(), "TODO handle C IndirectGotoStmtClass");
1806 return nullptr;
1467 case Stmt::LabelStmtClass:1807 case Stmt::LabelStmtClass:
1468 zig_panic("TODO handle C LabelStmtClass");1808 emit_warning(c, stmt->getLocStart(), "TODO handle C LabelStmtClass");
1809 return nullptr;
1469 case Stmt::MSDependentExistsStmtClass:1810 case Stmt::MSDependentExistsStmtClass:
1470 zig_panic("TODO handle C MSDependentExistsStmtClass");1811 emit_warning(c, stmt->getLocStart(), "TODO handle C MSDependentExistsStmtClass");
1812 return nullptr;
1471 case Stmt::NullStmtClass:1813 case Stmt::NullStmtClass:
1472 zig_panic("TODO handle C NullStmtClass");1814 emit_warning(c, stmt->getLocStart(), "TODO handle C NullStmtClass");
1815 return nullptr;
1473 case Stmt::OMPAtomicDirectiveClass:1816 case Stmt::OMPAtomicDirectiveClass:
1474 zig_panic("TODO handle C OMPAtomicDirectiveClass");1817 emit_warning(c, stmt->getLocStart(), "TODO handle C OMPAtomicDirectiveClass");
1818 return nullptr;
1475 case Stmt::OMPBarrierDirectiveClass:1819 case Stmt::OMPBarrierDirectiveClass:
1476 zig_panic("TODO handle C OMPBarrierDirectiveClass");1820 emit_warning(c, stmt->getLocStart(), "TODO handle C OMPBarrierDirectiveClass");
1821 return nullptr;
1477 case Stmt::OMPCancelDirectiveClass:1822 case Stmt::OMPCancelDirectiveClass:
1478 zig_panic("TODO handle C OMPCancelDirectiveClass");1823 emit_warning(c, stmt->getLocStart(), "TODO handle C OMPCancelDirectiveClass");
1824 return nullptr;
1479 case Stmt::OMPCancellationPointDirectiveClass:1825 case Stmt::OMPCancellationPointDirectiveClass:
1480 zig_panic("TODO handle C OMPCancellationPointDirectiveClass");1826 emit_warning(c, stmt->getLocStart(), "TODO handle C OMPCancellationPointDirectiveClass");
1827 return nullptr;
1481 case Stmt::OMPCriticalDirectiveClass:1828 case Stmt::OMPCriticalDirectiveClass:
1482 zig_panic("TODO handle C OMPCriticalDirectiveClass");1829 emit_warning(c, stmt->getLocStart(), "TODO handle C OMPCriticalDirectiveClass");
1830 return nullptr;
1483 case Stmt::OMPFlushDirectiveClass:1831 case Stmt::OMPFlushDirectiveClass:
1484 zig_panic("TODO handle C OMPFlushDirectiveClass");1832 emit_warning(c, stmt->getLocStart(), "TODO handle C OMPFlushDirectiveClass");
1833 return nullptr;
1485 case Stmt::OMPDistributeDirectiveClass:1834 case Stmt::OMPDistributeDirectiveClass:
1486 zig_panic("TODO handle C OMPDistributeDirectiveClass");1835 emit_warning(c, stmt->getLocStart(), "TODO handle C OMPDistributeDirectiveClass");
1836 return nullptr;
1487 case Stmt::OMPDistributeParallelForDirectiveClass:1837 case Stmt::OMPDistributeParallelForDirectiveClass:
1488 zig_panic("TODO handle C OMPDistributeParallelForDirectiveClass");1838 emit_warning(c, stmt->getLocStart(), "TODO handle C OMPDistributeParallelForDirectiveClass");
1839 return nullptr;
1489 case Stmt::OMPDistributeParallelForSimdDirectiveClass:1840 case Stmt::OMPDistributeParallelForSimdDirectiveClass:
1490 zig_panic("TODO handle C OMPDistributeParallelForSimdDirectiveClass");1841 emit_warning(c, stmt->getLocStart(), "TODO handle C OMPDistributeParallelForSimdDirectiveClass");
1842 return nullptr;
1491 case Stmt::OMPDistributeSimdDirectiveClass:1843 case Stmt::OMPDistributeSimdDirectiveClass:
1492 zig_panic("TODO handle C OMPDistributeSimdDirectiveClass");1844 emit_warning(c, stmt->getLocStart(), "TODO handle C OMPDistributeSimdDirectiveClass");
1845 return nullptr;
1493 case Stmt::OMPForDirectiveClass:1846 case Stmt::OMPForDirectiveClass:
1494 zig_panic("TODO handle C OMPForDirectiveClass");1847 emit_warning(c, stmt->getLocStart(), "TODO handle C OMPForDirectiveClass");
1848 return nullptr;
1495 case Stmt::OMPForSimdDirectiveClass:1849 case Stmt::OMPForSimdDirectiveClass:
1496 zig_panic("TODO handle C OMPForSimdDirectiveClass");1850 emit_warning(c, stmt->getLocStart(), "TODO handle C OMPForSimdDirectiveClass");
1851 return nullptr;
1497 case Stmt::OMPParallelForDirectiveClass:1852 case Stmt::OMPParallelForDirectiveClass:
1498 zig_panic("TODO handle C OMPParallelForDirectiveClass");1853 emit_warning(c, stmt->getLocStart(), "TODO handle C OMPParallelForDirectiveClass");
1854 return nullptr;
1499 case Stmt::OMPParallelForSimdDirectiveClass:1855 case Stmt::OMPParallelForSimdDirectiveClass:
1500 zig_panic("TODO handle C OMPParallelForSimdDirectiveClass");1856 emit_warning(c, stmt->getLocStart(), "TODO handle C OMPParallelForSimdDirectiveClass");
1857 return nullptr;
1501 case Stmt::OMPSimdDirectiveClass:1858 case Stmt::OMPSimdDirectiveClass:
1502 zig_panic("TODO handle C OMPSimdDirectiveClass");1859 emit_warning(c, stmt->getLocStart(), "TODO handle C OMPSimdDirectiveClass");
1860 return nullptr;
1503 case Stmt::OMPTargetParallelForSimdDirectiveClass:1861 case Stmt::OMPTargetParallelForSimdDirectiveClass:
1504 zig_panic("TODO handle C OMPTargetParallelForSimdDirectiveClass");1862 emit_warning(c, stmt->getLocStart(), "TODO handle C OMPTargetParallelForSimdDirectiveClass");
1863 return nullptr;
1505 case Stmt::OMPTargetSimdDirectiveClass:1864 case Stmt::OMPTargetSimdDirectiveClass:
1506 zig_panic("TODO handle C OMPTargetSimdDirectiveClass");1865 emit_warning(c, stmt->getLocStart(), "TODO handle C OMPTargetSimdDirectiveClass");
1866 return nullptr;
1507 case Stmt::OMPTargetTeamsDistributeDirectiveClass:1867 case Stmt::OMPTargetTeamsDistributeDirectiveClass:
1508 zig_panic("TODO handle C OMPTargetTeamsDistributeDirectiveClass");1868 emit_warning(c, stmt->getLocStart(), "TODO handle C OMPTargetTeamsDistributeDirectiveClass");
1869 return nullptr;
1509 case Stmt::OMPTargetTeamsDistributeParallelForDirectiveClass:1870 case Stmt::OMPTargetTeamsDistributeParallelForDirectiveClass:
1510 zig_panic("TODO handle C OMPTargetTeamsDistributeParallelForDirectiveClass");1871 emit_warning(c, stmt->getLocStart(), "TODO handle C OMPTargetTeamsDistributeParallelForDirectiveClass");
1872 return nullptr;
1511 case Stmt::OMPTargetTeamsDistributeParallelForSimdDirectiveClass:1873 case Stmt::OMPTargetTeamsDistributeParallelForSimdDirectiveClass:
1512 zig_panic("TODO handle C OMPTargetTeamsDistributeParallelForSimdDirectiveClass");1874 emit_warning(c, stmt->getLocStart(), "TODO handle C OMPTargetTeamsDistributeParallelForSimdDirectiveClass");
1875 return nullptr;
1513 case Stmt::OMPTargetTeamsDistributeSimdDirectiveClass:1876 case Stmt::OMPTargetTeamsDistributeSimdDirectiveClass:
1514 zig_panic("TODO handle C OMPTargetTeamsDistributeSimdDirectiveClass");1877 emit_warning(c, stmt->getLocStart(), "TODO handle C OMPTargetTeamsDistributeSimdDirectiveClass");
1878 return nullptr;
1515 case Stmt::OMPTaskLoopDirectiveClass:1879 case Stmt::OMPTaskLoopDirectiveClass:
1516 zig_panic("TODO handle C OMPTaskLoopDirectiveClass");1880 emit_warning(c, stmt->getLocStart(), "TODO handle C OMPTaskLoopDirectiveClass");
1881 return nullptr;
1517 case Stmt::OMPTaskLoopSimdDirectiveClass:1882 case Stmt::OMPTaskLoopSimdDirectiveClass:
1518 zig_panic("TODO handle C OMPTaskLoopSimdDirectiveClass");1883 emit_warning(c, stmt->getLocStart(), "TODO handle C OMPTaskLoopSimdDirectiveClass");
1884 return nullptr;
1519 case Stmt::OMPTeamsDistributeDirectiveClass:1885 case Stmt::OMPTeamsDistributeDirectiveClass:
1520 zig_panic("TODO handle C OMPTeamsDistributeDirectiveClass");1886 emit_warning(c, stmt->getLocStart(), "TODO handle C OMPTeamsDistributeDirectiveClass");
1887 return nullptr;
1521 case Stmt::OMPTeamsDistributeParallelForDirectiveClass:1888 case Stmt::OMPTeamsDistributeParallelForDirectiveClass:
1522 zig_panic("TODO handle C OMPTeamsDistributeParallelForDirectiveClass");1889 emit_warning(c, stmt->getLocStart(), "TODO handle C OMPTeamsDistributeParallelForDirectiveClass");
1890 return nullptr;
1523 case Stmt::OMPTeamsDistributeParallelForSimdDirectiveClass:1891 case Stmt::OMPTeamsDistributeParallelForSimdDirectiveClass:
1524 zig_panic("TODO handle C OMPTeamsDistributeParallelForSimdDirectiveClass");1892 emit_warning(c, stmt->getLocStart(), "TODO handle C OMPTeamsDistributeParallelForSimdDirectiveClass");
1893 return nullptr;
1525 case Stmt::OMPTeamsDistributeSimdDirectiveClass:1894 case Stmt::OMPTeamsDistributeSimdDirectiveClass:
1526 zig_panic("TODO handle C OMPTeamsDistributeSimdDirectiveClass");1895 emit_warning(c, stmt->getLocStart(), "TODO handle C OMPTeamsDistributeSimdDirectiveClass");
1896 return nullptr;
1527 case Stmt::OMPMasterDirectiveClass:1897 case Stmt::OMPMasterDirectiveClass:
1528 zig_panic("TODO handle C OMPMasterDirectiveClass");1898 emit_warning(c, stmt->getLocStart(), "TODO handle C OMPMasterDirectiveClass");
1899 return nullptr;
1529 case Stmt::OMPOrderedDirectiveClass:1900 case Stmt::OMPOrderedDirectiveClass:
1530 zig_panic("TODO handle C OMPOrderedDirectiveClass");1901 emit_warning(c, stmt->getLocStart(), "TODO handle C OMPOrderedDirectiveClass");
1902 return nullptr;
1531 case Stmt::OMPParallelDirectiveClass:1903 case Stmt::OMPParallelDirectiveClass:
1532 zig_panic("TODO handle C OMPParallelDirectiveClass");1904 emit_warning(c, stmt->getLocStart(), "TODO handle C OMPParallelDirectiveClass");
1905 return nullptr;
1533 case Stmt::OMPParallelSectionsDirectiveClass:1906 case Stmt::OMPParallelSectionsDirectiveClass:
1534 zig_panic("TODO handle C OMPParallelSectionsDirectiveClass");1907 emit_warning(c, stmt->getLocStart(), "TODO handle C OMPParallelSectionsDirectiveClass");
1908 return nullptr;
1535 case Stmt::OMPSectionDirectiveClass:1909 case Stmt::OMPSectionDirectiveClass:
1536 zig_panic("TODO handle C OMPSectionDirectiveClass");1910 emit_warning(c, stmt->getLocStart(), "TODO handle C OMPSectionDirectiveClass");
1911 return nullptr;
1537 case Stmt::OMPSectionsDirectiveClass:1912 case Stmt::OMPSectionsDirectiveClass:
1538 zig_panic("TODO handle C OMPSectionsDirectiveClass");1913 emit_warning(c, stmt->getLocStart(), "TODO handle C OMPSectionsDirectiveClass");
1914 return nullptr;
1539 case Stmt::OMPSingleDirectiveClass:1915 case Stmt::OMPSingleDirectiveClass:
1540 zig_panic("TODO handle C OMPSingleDirectiveClass");1916 emit_warning(c, stmt->getLocStart(), "TODO handle C OMPSingleDirectiveClass");
1917 return nullptr;
1541 case Stmt::OMPTargetDataDirectiveClass:1918 case Stmt::OMPTargetDataDirectiveClass:
1542 zig_panic("TODO handle C OMPTargetDataDirectiveClass");1919 emit_warning(c, stmt->getLocStart(), "TODO handle C OMPTargetDataDirectiveClass");
1920 return nullptr;
1543 case Stmt::OMPTargetDirectiveClass:1921 case Stmt::OMPTargetDirectiveClass:
1544 zig_panic("TODO handle C OMPTargetDirectiveClass");1922 emit_warning(c, stmt->getLocStart(), "TODO handle C OMPTargetDirectiveClass");
1923 return nullptr;
1545 case Stmt::OMPTargetEnterDataDirectiveClass:1924 case Stmt::OMPTargetEnterDataDirectiveClass:
1546 zig_panic("TODO handle C OMPTargetEnterDataDirectiveClass");1925 emit_warning(c, stmt->getLocStart(), "TODO handle C OMPTargetEnterDataDirectiveClass");
1926 return nullptr;
1547 case Stmt::OMPTargetExitDataDirectiveClass:1927 case Stmt::OMPTargetExitDataDirectiveClass:
1548 zig_panic("TODO handle C OMPTargetExitDataDirectiveClass");1928 emit_warning(c, stmt->getLocStart(), "TODO handle C OMPTargetExitDataDirectiveClass");
1929 return nullptr;
1549 case Stmt::OMPTargetParallelDirectiveClass:1930 case Stmt::OMPTargetParallelDirectiveClass:
1550 zig_panic("TODO handle C OMPTargetParallelDirectiveClass");1931 emit_warning(c, stmt->getLocStart(), "TODO handle C OMPTargetParallelDirectiveClass");
1932 return nullptr;
1551 case Stmt::OMPTargetParallelForDirectiveClass:1933 case Stmt::OMPTargetParallelForDirectiveClass:
1552 zig_panic("TODO handle C OMPTargetParallelForDirectiveClass");1934 emit_warning(c, stmt->getLocStart(), "TODO handle C OMPTargetParallelForDirectiveClass");
1935 return nullptr;
1553 case Stmt::OMPTargetTeamsDirectiveClass:1936 case Stmt::OMPTargetTeamsDirectiveClass:
1554 zig_panic("TODO handle C OMPTargetTeamsDirectiveClass");1937 emit_warning(c, stmt->getLocStart(), "TODO handle C OMPTargetTeamsDirectiveClass");
1938 return nullptr;
1555 case Stmt::OMPTargetUpdateDirectiveClass:1939 case Stmt::OMPTargetUpdateDirectiveClass:
1556 zig_panic("TODO handle C OMPTargetUpdateDirectiveClass");1940 emit_warning(c, stmt->getLocStart(), "TODO handle C OMPTargetUpdateDirectiveClass");
1941 return nullptr;
1557 case Stmt::OMPTaskDirectiveClass:1942 case Stmt::OMPTaskDirectiveClass:
1558 zig_panic("TODO handle C OMPTaskDirectiveClass");1943 emit_warning(c, stmt->getLocStart(), "TODO handle C OMPTaskDirectiveClass");
1944 return nullptr;
1559 case Stmt::OMPTaskgroupDirectiveClass:1945 case Stmt::OMPTaskgroupDirectiveClass:
1560 zig_panic("TODO handle C OMPTaskgroupDirectiveClass");1946 emit_warning(c, stmt->getLocStart(), "TODO handle C OMPTaskgroupDirectiveClass");
1947 return nullptr;
1561 case Stmt::OMPTaskwaitDirectiveClass:1948 case Stmt::OMPTaskwaitDirectiveClass:
1562 zig_panic("TODO handle C OMPTaskwaitDirectiveClass");1949 emit_warning(c, stmt->getLocStart(), "TODO handle C OMPTaskwaitDirectiveClass");
1950 return nullptr;
1563 case Stmt::OMPTaskyieldDirectiveClass:1951 case Stmt::OMPTaskyieldDirectiveClass:
1564 zig_panic("TODO handle C OMPTaskyieldDirectiveClass");1952 emit_warning(c, stmt->getLocStart(), "TODO handle C OMPTaskyieldDirectiveClass");
1953 return nullptr;
1565 case Stmt::OMPTeamsDirectiveClass:1954 case Stmt::OMPTeamsDirectiveClass:
1566 zig_panic("TODO handle C OMPTeamsDirectiveClass");1955 emit_warning(c, stmt->getLocStart(), "TODO handle C OMPTeamsDirectiveClass");
1956 return nullptr;
1567 case Stmt::ObjCAtCatchStmtClass:1957 case Stmt::ObjCAtCatchStmtClass:
1568 zig_panic("TODO handle C ObjCAtCatchStmtClass");1958 emit_warning(c, stmt->getLocStart(), "TODO handle C ObjCAtCatchStmtClass");
1959 return nullptr;
1569 case Stmt::ObjCAtFinallyStmtClass:1960 case Stmt::ObjCAtFinallyStmtClass:
1570 zig_panic("TODO handle C ObjCAtFinallyStmtClass");1961 emit_warning(c, stmt->getLocStart(), "TODO handle C ObjCAtFinallyStmtClass");
1962 return nullptr;
1571 case Stmt::ObjCAtSynchronizedStmtClass:1963 case Stmt::ObjCAtSynchronizedStmtClass:
1572 zig_panic("TODO handle C ObjCAtSynchronizedStmtClass");1964 emit_warning(c, stmt->getLocStart(), "TODO handle C ObjCAtSynchronizedStmtClass");
1965 return nullptr;
1573 case Stmt::ObjCAtThrowStmtClass:1966 case Stmt::ObjCAtThrowStmtClass:
1574 zig_panic("TODO handle C ObjCAtThrowStmtClass");1967 emit_warning(c, stmt->getLocStart(), "TODO handle C ObjCAtThrowStmtClass");
1968 return nullptr;
1575 case Stmt::ObjCAtTryStmtClass:1969 case Stmt::ObjCAtTryStmtClass:
1576 zig_panic("TODO handle C ObjCAtTryStmtClass");1970 emit_warning(c, stmt->getLocStart(), "TODO handle C ObjCAtTryStmtClass");
1971 return nullptr;
1577 case Stmt::ObjCAutoreleasePoolStmtClass:1972 case Stmt::ObjCAutoreleasePoolStmtClass:
1578 zig_panic("TODO handle C ObjCAutoreleasePoolStmtClass");1973 emit_warning(c, stmt->getLocStart(), "TODO handle C ObjCAutoreleasePoolStmtClass");
1974 return nullptr;
1579 case Stmt::ObjCForCollectionStmtClass:1975 case Stmt::ObjCForCollectionStmtClass:
1580 zig_panic("TODO handle C ObjCForCollectionStmtClass");1976 emit_warning(c, stmt->getLocStart(), "TODO handle C ObjCForCollectionStmtClass");
1977 return nullptr;
1581 case Stmt::SEHExceptStmtClass:1978 case Stmt::SEHExceptStmtClass:
1582 zig_panic("TODO handle C SEHExceptStmtClass");1979 emit_warning(c, stmt->getLocStart(), "TODO handle C SEHExceptStmtClass");
1980 return nullptr;
1583 case Stmt::SEHFinallyStmtClass:1981 case Stmt::SEHFinallyStmtClass:
1584 zig_panic("TODO handle C SEHFinallyStmtClass");1982 emit_warning(c, stmt->getLocStart(), "TODO handle C SEHFinallyStmtClass");
1983 return nullptr;
1585 case Stmt::SEHLeaveStmtClass:1984 case Stmt::SEHLeaveStmtClass:
1586 zig_panic("TODO handle C SEHLeaveStmtClass");1985 emit_warning(c, stmt->getLocStart(), "TODO handle C SEHLeaveStmtClass");
1986 return nullptr;
1587 case Stmt::SEHTryStmtClass:1987 case Stmt::SEHTryStmtClass:
1588 zig_panic("TODO handle C SEHTryStmtClass");1988 emit_warning(c, stmt->getLocStart(), "TODO handle C SEHTryStmtClass");
1989 return nullptr;
1589 }1990 }
1590 zig_unreachable();1991 zig_unreachable();
1591}1992}
...@@ -1642,6 +2043,11 @@ static void visit_fn_decl(Context *c, const FunctionDecl *fn_decl) {...@@ -1642,6 +2043,11 @@ static void visit_fn_decl(Context *c, const FunctionDecl *fn_decl) {
1642 AstNode *fn_def_node = trans_create_node(c, NodeTypeFnDef);2043 AstNode *fn_def_node = trans_create_node(c, NodeTypeFnDef);
1643 fn_def_node->data.fn_def.fn_proto = proto_node;2044 fn_def_node->data.fn_def.fn_proto = proto_node;
1644 fn_def_node->data.fn_def.body = trans_stmt(c, nullptr, body);2045 fn_def_node->data.fn_def.body = trans_stmt(c, nullptr, body);
2046 assert(fn_def_node->data.fn_def.body != skip_add_to_block_node);
2047 if (fn_def_node->data.fn_def.body == nullptr) {
2048 emit_warning(c, fn_decl->getLocation(), "unable to translate function");
2049 return;
2050 }
16452051
1646 proto_node->data.fn_proto.fn_def_node = fn_def_node;2052 proto_node->data.fn_proto.fn_def_node = fn_def_node;
1647 c->root->data.root.top_level_decls.append(fn_def_node);2053 c->root->data.root.top_level_decls.append(fn_def_node);