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 {
5454static AstNode *resolve_record_decl(Context *c, const RecordDecl *record_decl);
5555static AstNode *resolve_enum_decl(Context *c, const EnumDecl *enum_decl);
5656static 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
6159__attribute__ ((format (printf, 3, 4)))
......@@ -362,14 +360,15 @@ static bool c_is_float(Context *c, QualType qt) {
362360 }
363361}
364362
365static AstNode * trans_stmt(Context *c, AstNode *block, Stmt *stmt);
366static AstNode * trans_qual_type(Context *c, QualType qt, const SourceLocation &source_loc);
363static AstNode *trans_stmt(Context *c, AstNode *block, Stmt *stmt);
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) {
369368 return trans_stmt(c, block, expr);
370369}
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) {
373372 switch (ty->getTypeClass()) {
374373 case Type::Builtin:
375374 {
......@@ -506,9 +505,9 @@ static AstNode *trans_type_with_table(Context *c, const Type *ty, const SourceLo
506505 const ElaboratedType *elaborated_ty = static_cast<const ElaboratedType*>(ty);
507506 switch (elaborated_ty->getKeyword()) {
508507 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);
510509 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);
512511 case ETK_Interface:
513512 case ETK_Union:
514513 case ETK_Class:
......@@ -703,19 +702,17 @@ static AstNode *trans_type_with_table(Context *c, const Type *ty, const SourceLo
703702 zig_unreachable();
704703}
705704
706static AstNode * trans_qual_type_with_table(Context *c, QualType qt, const SourceLocation &source_loc) {
707 return trans_type_with_table(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);
705static AstNode *trans_qual_type(Context *c, QualType qt, const SourceLocation &source_loc) {
706 return trans_type(c, qt.getTypePtr(), source_loc);
712707}
713708
714static AstNode * trans_compound_stmt(Context *c, AstNode *parent, CompoundStmt *stmt) {
709static AstNode *trans_compound_stmt(Context *c, AstNode *parent, CompoundStmt *stmt) {
715710 AstNode *child_block = trans_create_node(c, NodeTypeBlock);
716711 for (CompoundStmt::body_iterator it = stmt->body_begin(), end_it = stmt->body_end(); it != end_it; ++it) {
717712 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)
719716 child_block->data.block.statements.append(child_node);
720717 }
721718 return child_block;
......@@ -724,10 +721,13 @@ static AstNode * trans_compound_stmt(Context *c, AstNode *parent, CompoundStmt *
724721static AstNode *trans_return_stmt(Context *c, AstNode *block, ReturnStmt *stmt) {
725722 Expr *value_expr = stmt->getRetValue();
726723 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;
728726 } else {
729727 AstNode *return_node = trans_create_node(c, NodeTypeReturnExpr);
730728 return_node->data.return_expr.expr = trans_expr(c, block, value_expr);
729 if (return_node->data.return_expr.expr == nullptr)
730 return nullptr;
731731 return return_node;
732732 }
733733}
......@@ -735,7 +735,8 @@ static AstNode *trans_return_stmt(Context *c, AstNode *block, ReturnStmt *stmt)
735735static AstNode *trans_integer_literal(Context *c, IntegerLiteral *stmt) {
736736 llvm::APSInt result;
737737 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;
739740 }
740741 return trans_create_node_apint(c, result);
741742}
......@@ -748,40 +749,64 @@ static AstNode *trans_conditional_operator(Context *c, AstNode *block, Condition
748749 Expr *false_expr = stmt->getFalseExpr();
749750
750751 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
751755 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
752759 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
754763 return node;
755764}
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) {
758767 AstNode *node = trans_create_node(c, NodeTypeBinOpExpr);
759768 node->data.bin_op_expr.bin_op = bin_op;
769
760770 node->data.bin_op_expr.op1 = trans_expr(c, block, lhs);
771 if (node->data.bin_op_expr.op1 == nullptr)
772 return nullptr;
773
761774 node->data.bin_op_expr.op2 = trans_expr(c, block, rhs);
775 if (node->data.bin_op_expr.op2 == nullptr)
776 return nullptr;
777
762778 return node;
763779}
764780
765static AstNode * trans_binary_operator(Context *c, AstNode *block, BinaryOperator *stmt) {
781static AstNode *trans_binary_operator(Context *c, AstNode *block, BinaryOperator *stmt) {
766782 switch (stmt->getOpcode()) {
767783 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;
769786 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;
771789 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;
773792 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;
775795 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;
777798 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;
779801 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;
781804 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;
783807 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;
785810 case BO_LT:
786811 return trans_create_bin_op(c, block, stmt->getLHS(), BinOpTypeCmpLessThan, stmt->getRHS());
787812 case BO_GT:
......@@ -791,405 +816,596 @@ static AstNode * trans_binary_operator(Context *c, AstNode *block, BinaryOperato
791816 case BO_GE:
792817 return trans_create_bin_op(c, block, stmt->getLHS(), BinOpTypeCmpGreaterOrEq, stmt->getRHS());
793818 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;
795821 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;
797824 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;
799827 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;
801830 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;
803833 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;
805836 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;
807839 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;
809842 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;
811845 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;
813848 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;
815851 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;
817854 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;
819857 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;
821860 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;
823863 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;
825866 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;
827869 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;
829872 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;
831875 }
832876
833877 zig_unreachable();
834878}
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) {
837881 switch (stmt->getCastKind()) {
838882 case CK_LValueToRValue:
839883 return trans_expr(c, block, stmt->getSubExpr());
840884 case CK_IntegralCast:
841885 {
842886 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()));
844 node->data.fn_call_expr.params.append(trans_expr(c, block, stmt->getSubExpr()));
887
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);
845898 return node;
846899 }
847900 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;
849903 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;
851906 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;
853909 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;
855912 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;
857915 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;
859918 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;
861921 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;
863924 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;
865927 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;
867930 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;
869933 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;
871936 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;
873939 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;
875942 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;
877945 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;
879948 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;
881951 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;
883954 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;
885957 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;
887960 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;
889963 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;
891966 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;
893969 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;
895972 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;
897975 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;
899978 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;
901981 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;
903984 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;
905987 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;
907990 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;
909993 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;
911996 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;
913999 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;
9151002 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;
9171005 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;
9191008 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;
9211011 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;
9231014 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;
9251017 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;
9271020 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;
9291023 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;
9311026 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;
9331029 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;
9351032 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;
9371035 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;
9391038 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;
9411041 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;
9431044 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;
9451047 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;
9471050 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;
9491053 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;
9511056 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;
9531059 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;
9551062 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;
9571065 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;
9591068 }
9601069 zig_unreachable();
9611070}
9621071
963static AstNode * trans_decl_ref_expr(Context *c, DeclRefExpr *stmt) {
1072static AstNode *trans_decl_ref_expr(Context *c, DeclRefExpr *stmt) {
9641073 ValueDecl *value_decl = stmt->getDecl();
9651074 const char *name = decl_name(value_decl);
966
967 AstNode *node = trans_create_node(c, NodeTypeSymbol);
968 node->data.symbol_expr.symbol = buf_create_from_str(name);
969 return node;
1075 return trans_create_node_symbol_str(c, name);
9701076}
9711077
972static AstNode * trans_unary_operator(Context *c, AstNode *block, UnaryOperator *stmt) {
1078static AstNode *trans_unary_operator(Context *c, AstNode *block, UnaryOperator *stmt) {
9731079 switch (stmt->getOpcode()) {
9741080 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;
9761083 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;
9781086 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;
9801089 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;
9821092 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;
9841095 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;
9861098 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;
9881101 case UO_Minus:
9891102 {
9901103 Expr *op_expr = stmt->getSubExpr();
9911104 if (c_is_signed_integer(c, op_expr->getType()) || c_is_float(c, op_expr->getType())) {
9921105 AstNode *node = trans_create_node(c, NodeTypePrefixOpExpr);
9931106 node->data.prefix_op_expr.prefix_op = PrefixOpNegation;
1107
9941108 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
9951112 return node;
9961113 } else if (c_is_unsigned_integer(c, op_expr->getType())) {
9971114 // we gotta emit 0 -% x
9981115 AstNode *node = trans_create_node(c, NodeTypeBinOpExpr);
9991116 node->data.bin_op_expr.op1 = trans_create_node_unsigned(c, 0);
1117
10001118 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
10011122 node->data.bin_op_expr.bin_op = BinOpTypeSubWrap;
10021123 return node;
10031124 } 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;
10051127 }
10061128 }
10071129 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;
10091132 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;
10111135 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;
10131138 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;
10151141 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;
10171144 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;
10191147 }
10201148 zig_unreachable();
10211149}
10221150
1023static AstNode * trans_local_declaration(Context *c, AstNode *block, DeclStmt *stmt) {
1151static AstNode *trans_local_declaration(Context *c, AstNode *block, DeclStmt *stmt) {
10241152 for (auto iter = stmt->decl_begin(); iter != stmt->decl_end(); iter++) {
10251153 Decl *decl = *iter;
10261154 switch (decl->getKind()) {
10271155 case Decl::Var: {
10281156 VarDecl *var_decl = (VarDecl *)decl;
10291157 QualType qual_type = var_decl->getTypeSourceInfo()->getType();
1030 AstNode *init_node = var_decl->hasInit() ? trans_expr(c, block, var_decl->getInit()) : nullptr;
1031 AstNode *type_node = trans_qual_type(c, qual_type, stmt->getStartLoc());
1158 AstNode *init_node = nullptr;
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
10321169 AstNode *node = trans_create_node_var_decl(c, qual_type.isConstQualified(),
10331170 buf_create_from_str(decl_name(var_decl)), type_node, init_node);
10341171 block->data.block.statements.append(node);
10351172 continue;
10361173 }
10371174 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;
10391177 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;
10411180 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;
10431183 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;
10451186 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;
10471189 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;
10491192 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;
10511195 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;
10531198 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;
10551201 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;
10571204 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;
10591207 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;
10611210 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;
10631213 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;
10651216 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;
10671219 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;
10691222 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;
10711225 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;
10731228 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;
10751231 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;
10771234 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;
10791237 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;
10811240 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;
10831243 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;
10851246 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;
10871249 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;
10891252 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;
10911255 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;
10931258 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;
10951261 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;
10971264 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;
10991267 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;
11011270 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;
11031273 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;
11051276 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;
11071279 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;
11091282 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;
11111285 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;
11131288 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;
11151291 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;
11171294 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;
11191297 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;
11211300 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;
11231303 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;
11251306 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;
11271309 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;
11291312 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;
11311315 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;
11331318 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;
11351321 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;
11371324 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;
11391327 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;
11411330 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;
11431333 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;
11451336 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;
11471339 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;
11491342 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;
11511345 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;
11531348 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;
11551351 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;
11571354 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;
11591357 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;
11611360 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;
11631363 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;
11651366 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;
11671369 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;
11691372 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;
11711375 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;
11731378 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;
11751381 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;
11771384 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;
11791387 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;
11811390 }
11821391 zig_unreachable();
11831392 }
11841393
11851394 // declarations were already added
1186 return nullptr;
1395 return skip_add_to_block_node;
11871396}
11881397
11891398static AstNode *trans_while_loop(Context *c, AstNode *block, WhileStmt *stmt) {
11901399 AstNode *while_node = trans_create_node(c, NodeTypeWhileExpr);
1400
11911401 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
11921405 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
11931409 return while_node;
11941410}
11951411
......@@ -1217,375 +1433,560 @@ static AstNode *trans_stmt(Context *c, AstNode *block, Stmt *stmt) {
12171433 case Stmt::WhileStmtClass:
12181434 return trans_while_loop(c, block, (WhileStmt *)stmt);
12191435 case Stmt::CaseStmtClass:
1220 zig_panic("TODO handle C CaseStmtClass");
1436 emit_warning(c, stmt->getLocStart(), "TODO handle C CaseStmtClass");
1437 return nullptr;
12211438 case Stmt::DefaultStmtClass:
1222 zig_panic("TODO handle C DefaultStmtClass");
1439 emit_warning(c, stmt->getLocStart(), "TODO handle C DefaultStmtClass");
1440 return nullptr;
12231441 case Stmt::SwitchStmtClass:
1224 zig_panic("TODO handle C SwitchStmtClass");
1442 emit_warning(c, stmt->getLocStart(), "TODO handle C SwitchStmtClass");
1443 return nullptr;
12251444 case Stmt::NoStmtClass:
1226 zig_panic("TODO handle C NoStmtClass");
1445 emit_warning(c, stmt->getLocStart(), "TODO handle C NoStmtClass");
1446 return nullptr;
12271447 case Stmt::GCCAsmStmtClass:
1228 zig_panic("TODO handle C GCCAsmStmtClass");
1448 emit_warning(c, stmt->getLocStart(), "TODO handle C GCCAsmStmtClass");
1449 return nullptr;
12291450 case Stmt::MSAsmStmtClass:
1230 zig_panic("TODO handle C MSAsmStmtClass");
1451 emit_warning(c, stmt->getLocStart(), "TODO handle C MSAsmStmtClass");
1452 return nullptr;
12311453 case Stmt::AttributedStmtClass:
1232 zig_panic("TODO handle C AttributedStmtClass");
1454 emit_warning(c, stmt->getLocStart(), "TODO handle C AttributedStmtClass");
1455 return nullptr;
12331456 case Stmt::BreakStmtClass:
1234 zig_panic("TODO handle C BreakStmtClass");
1457 emit_warning(c, stmt->getLocStart(), "TODO handle C BreakStmtClass");
1458 return nullptr;
12351459 case Stmt::CXXCatchStmtClass:
1236 zig_panic("TODO handle C CXXCatchStmtClass");
1460 emit_warning(c, stmt->getLocStart(), "TODO handle C CXXCatchStmtClass");
1461 return nullptr;
12371462 case Stmt::CXXForRangeStmtClass:
1238 zig_panic("TODO handle C CXXForRangeStmtClass");
1463 emit_warning(c, stmt->getLocStart(), "TODO handle C CXXForRangeStmtClass");
1464 return nullptr;
12391465 case Stmt::CXXTryStmtClass:
1240 zig_panic("TODO handle C CXXTryStmtClass");
1466 emit_warning(c, stmt->getLocStart(), "TODO handle C CXXTryStmtClass");
1467 return nullptr;
12411468 case Stmt::CapturedStmtClass:
1242 zig_panic("TODO handle C CapturedStmtClass");
1469 emit_warning(c, stmt->getLocStart(), "TODO handle C CapturedStmtClass");
1470 return nullptr;
12431471 case Stmt::ContinueStmtClass:
1244 zig_panic("TODO handle C ContinueStmtClass");
1472 emit_warning(c, stmt->getLocStart(), "TODO handle C ContinueStmtClass");
1473 return nullptr;
12451474 case Stmt::CoreturnStmtClass:
1246 zig_panic("TODO handle C CoreturnStmtClass");
1475 emit_warning(c, stmt->getLocStart(), "TODO handle C CoreturnStmtClass");
1476 return nullptr;
12471477 case Stmt::CoroutineBodyStmtClass:
1248 zig_panic("TODO handle C CoroutineBodyStmtClass");
1478 emit_warning(c, stmt->getLocStart(), "TODO handle C CoroutineBodyStmtClass");
1479 return nullptr;
12491480 case Stmt::DoStmtClass:
1250 zig_panic("TODO handle C DoStmtClass");
1481 emit_warning(c, stmt->getLocStart(), "TODO handle C DoStmtClass");
1482 return nullptr;
12511483 case Stmt::BinaryConditionalOperatorClass:
1252 zig_panic("TODO handle C BinaryConditionalOperatorClass");
1484 emit_warning(c, stmt->getLocStart(), "TODO handle C BinaryConditionalOperatorClass");
1485 return nullptr;
12531486 case Stmt::AddrLabelExprClass:
1254 zig_panic("TODO handle C AddrLabelExprClass");
1487 emit_warning(c, stmt->getLocStart(), "TODO handle C AddrLabelExprClass");
1488 return nullptr;
12551489 case Stmt::ArrayInitIndexExprClass:
1256 zig_panic("TODO handle C ArrayInitIndexExprClass");
1490 emit_warning(c, stmt->getLocStart(), "TODO handle C ArrayInitIndexExprClass");
1491 return nullptr;
12571492 case Stmt::ArrayInitLoopExprClass:
1258 zig_panic("TODO handle C ArrayInitLoopExprClass");
1493 emit_warning(c, stmt->getLocStart(), "TODO handle C ArrayInitLoopExprClass");
1494 return nullptr;
12591495 case Stmt::ArraySubscriptExprClass:
1260 zig_panic("TODO handle C ArraySubscriptExprClass");
1496 emit_warning(c, stmt->getLocStart(), "TODO handle C ArraySubscriptExprClass");
1497 return nullptr;
12611498 case Stmt::ArrayTypeTraitExprClass:
1262 zig_panic("TODO handle C ArrayTypeTraitExprClass");
1499 emit_warning(c, stmt->getLocStart(), "TODO handle C ArrayTypeTraitExprClass");
1500 return nullptr;
12631501 case Stmt::AsTypeExprClass:
1264 zig_panic("TODO handle C AsTypeExprClass");
1502 emit_warning(c, stmt->getLocStart(), "TODO handle C AsTypeExprClass");
1503 return nullptr;
12651504 case Stmt::AtomicExprClass:
1266 zig_panic("TODO handle C AtomicExprClass");
1505 emit_warning(c, stmt->getLocStart(), "TODO handle C AtomicExprClass");
1506 return nullptr;
12671507 case Stmt::CompoundAssignOperatorClass:
1268 zig_panic("TODO handle C CompoundAssignOperatorClass");
1508 emit_warning(c, stmt->getLocStart(), "TODO handle C CompoundAssignOperatorClass");
1509 return nullptr;
12691510 case Stmt::BlockExprClass:
1270 zig_panic("TODO handle C BlockExprClass");
1511 emit_warning(c, stmt->getLocStart(), "TODO handle C BlockExprClass");
1512 return nullptr;
12711513 case Stmt::CXXBindTemporaryExprClass:
1272 zig_panic("TODO handle C CXXBindTemporaryExprClass");
1514 emit_warning(c, stmt->getLocStart(), "TODO handle C CXXBindTemporaryExprClass");
1515 return nullptr;
12731516 case Stmt::CXXBoolLiteralExprClass:
1274 zig_panic("TODO handle C CXXBoolLiteralExprClass");
1517 emit_warning(c, stmt->getLocStart(), "TODO handle C CXXBoolLiteralExprClass");
1518 return nullptr;
12751519 case Stmt::CXXConstructExprClass:
1276 zig_panic("TODO handle C CXXConstructExprClass");
1520 emit_warning(c, stmt->getLocStart(), "TODO handle C CXXConstructExprClass");
1521 return nullptr;
12771522 case Stmt::CXXTemporaryObjectExprClass:
1278 zig_panic("TODO handle C CXXTemporaryObjectExprClass");
1523 emit_warning(c, stmt->getLocStart(), "TODO handle C CXXTemporaryObjectExprClass");
1524 return nullptr;
12791525 case Stmt::CXXDefaultArgExprClass:
1280 zig_panic("TODO handle C CXXDefaultArgExprClass");
1526 emit_warning(c, stmt->getLocStart(), "TODO handle C CXXDefaultArgExprClass");
1527 return nullptr;
12811528 case Stmt::CXXDefaultInitExprClass:
1282 zig_panic("TODO handle C CXXDefaultInitExprClass");
1529 emit_warning(c, stmt->getLocStart(), "TODO handle C CXXDefaultInitExprClass");
1530 return nullptr;
12831531 case Stmt::CXXDeleteExprClass:
1284 zig_panic("TODO handle C CXXDeleteExprClass");
1532 emit_warning(c, stmt->getLocStart(), "TODO handle C CXXDeleteExprClass");
1533 return nullptr;
12851534 case Stmt::CXXDependentScopeMemberExprClass:
1286 zig_panic("TODO handle C CXXDependentScopeMemberExprClass");
1535 emit_warning(c, stmt->getLocStart(), "TODO handle C CXXDependentScopeMemberExprClass");
1536 return nullptr;
12871537 case Stmt::CXXFoldExprClass:
1288 zig_panic("TODO handle C CXXFoldExprClass");
1538 emit_warning(c, stmt->getLocStart(), "TODO handle C CXXFoldExprClass");
1539 return nullptr;
12891540 case Stmt::CXXInheritedCtorInitExprClass:
1290 zig_panic("TODO handle C CXXInheritedCtorInitExprClass");
1541 emit_warning(c, stmt->getLocStart(), "TODO handle C CXXInheritedCtorInitExprClass");
1542 return nullptr;
12911543 case Stmt::CXXNewExprClass:
1292 zig_panic("TODO handle C CXXNewExprClass");
1544 emit_warning(c, stmt->getLocStart(), "TODO handle C CXXNewExprClass");
1545 return nullptr;
12931546 case Stmt::CXXNoexceptExprClass:
1294 zig_panic("TODO handle C CXXNoexceptExprClass");
1547 emit_warning(c, stmt->getLocStart(), "TODO handle C CXXNoexceptExprClass");
1548 return nullptr;
12951549 case Stmt::CXXNullPtrLiteralExprClass:
1296 zig_panic("TODO handle C CXXNullPtrLiteralExprClass");
1550 emit_warning(c, stmt->getLocStart(), "TODO handle C CXXNullPtrLiteralExprClass");
1551 return nullptr;
12971552 case Stmt::CXXPseudoDestructorExprClass:
1298 zig_panic("TODO handle C CXXPseudoDestructorExprClass");
1553 emit_warning(c, stmt->getLocStart(), "TODO handle C CXXPseudoDestructorExprClass");
1554 return nullptr;
12991555 case Stmt::CXXScalarValueInitExprClass:
1300 zig_panic("TODO handle C CXXScalarValueInitExprClass");
1556 emit_warning(c, stmt->getLocStart(), "TODO handle C CXXScalarValueInitExprClass");
1557 return nullptr;
13011558 case Stmt::CXXStdInitializerListExprClass:
1302 zig_panic("TODO handle C CXXStdInitializerListExprClass");
1559 emit_warning(c, stmt->getLocStart(), "TODO handle C CXXStdInitializerListExprClass");
1560 return nullptr;
13031561 case Stmt::CXXThisExprClass:
1304 zig_panic("TODO handle C CXXThisExprClass");
1562 emit_warning(c, stmt->getLocStart(), "TODO handle C CXXThisExprClass");
1563 return nullptr;
13051564 case Stmt::CXXThrowExprClass:
1306 zig_panic("TODO handle C CXXThrowExprClass");
1565 emit_warning(c, stmt->getLocStart(), "TODO handle C CXXThrowExprClass");
1566 return nullptr;
13071567 case Stmt::CXXTypeidExprClass:
1308 zig_panic("TODO handle C CXXTypeidExprClass");
1568 emit_warning(c, stmt->getLocStart(), "TODO handle C CXXTypeidExprClass");
1569 return nullptr;
13091570 case Stmt::CXXUnresolvedConstructExprClass:
1310 zig_panic("TODO handle C CXXUnresolvedConstructExprClass");
1571 emit_warning(c, stmt->getLocStart(), "TODO handle C CXXUnresolvedConstructExprClass");
1572 return nullptr;
13111573 case Stmt::CXXUuidofExprClass:
1312 zig_panic("TODO handle C CXXUuidofExprClass");
1574 emit_warning(c, stmt->getLocStart(), "TODO handle C CXXUuidofExprClass");
1575 return nullptr;
13131576 case Stmt::CallExprClass:
1314 zig_panic("TODO handle C CallExprClass");
1577 emit_warning(c, stmt->getLocStart(), "TODO handle C CallExprClass");
1578 return nullptr;
13151579 case Stmt::CUDAKernelCallExprClass:
1316 zig_panic("TODO handle C CUDAKernelCallExprClass");
1580 emit_warning(c, stmt->getLocStart(), "TODO handle C CUDAKernelCallExprClass");
1581 return nullptr;
13171582 case Stmt::CXXMemberCallExprClass:
1318 zig_panic("TODO handle C CXXMemberCallExprClass");
1583 emit_warning(c, stmt->getLocStart(), "TODO handle C CXXMemberCallExprClass");
1584 return nullptr;
13191585 case Stmt::CXXOperatorCallExprClass:
1320 zig_panic("TODO handle C CXXOperatorCallExprClass");
1586 emit_warning(c, stmt->getLocStart(), "TODO handle C CXXOperatorCallExprClass");
1587 return nullptr;
13211588 case Stmt::UserDefinedLiteralClass:
1322 zig_panic("TODO handle C UserDefinedLiteralClass");
1589 emit_warning(c, stmt->getLocStart(), "TODO handle C UserDefinedLiteralClass");
1590 return nullptr;
13231591 case Stmt::CStyleCastExprClass:
1324 zig_panic("TODO handle C CStyleCastExprClass");
1592 emit_warning(c, stmt->getLocStart(), "TODO handle C CStyleCastExprClass");
1593 return nullptr;
13251594 case Stmt::CXXFunctionalCastExprClass:
1326 zig_panic("TODO handle C CXXFunctionalCastExprClass");
1595 emit_warning(c, stmt->getLocStart(), "TODO handle C CXXFunctionalCastExprClass");
1596 return nullptr;
13271597 case Stmt::CXXConstCastExprClass:
1328 zig_panic("TODO handle C CXXConstCastExprClass");
1598 emit_warning(c, stmt->getLocStart(), "TODO handle C CXXConstCastExprClass");
1599 return nullptr;
13291600 case Stmt::CXXDynamicCastExprClass:
1330 zig_panic("TODO handle C CXXDynamicCastExprClass");
1601 emit_warning(c, stmt->getLocStart(), "TODO handle C CXXDynamicCastExprClass");
1602 return nullptr;
13311603 case Stmt::CXXReinterpretCastExprClass:
1332 zig_panic("TODO handle C CXXReinterpretCastExprClass");
1604 emit_warning(c, stmt->getLocStart(), "TODO handle C CXXReinterpretCastExprClass");
1605 return nullptr;
13331606 case Stmt::CXXStaticCastExprClass:
1334 zig_panic("TODO handle C CXXStaticCastExprClass");
1607 emit_warning(c, stmt->getLocStart(), "TODO handle C CXXStaticCastExprClass");
1608 return nullptr;
13351609 case Stmt::ObjCBridgedCastExprClass:
1336 zig_panic("TODO handle C ObjCBridgedCastExprClass");
1610 emit_warning(c, stmt->getLocStart(), "TODO handle C ObjCBridgedCastExprClass");
1611 return nullptr;
13371612 case Stmt::CharacterLiteralClass:
1338 zig_panic("TODO handle C CharacterLiteralClass");
1613 emit_warning(c, stmt->getLocStart(), "TODO handle C CharacterLiteralClass");
1614 return nullptr;
13391615 case Stmt::ChooseExprClass:
1340 zig_panic("TODO handle C ChooseExprClass");
1616 emit_warning(c, stmt->getLocStart(), "TODO handle C ChooseExprClass");
1617 return nullptr;
13411618 case Stmt::CompoundLiteralExprClass:
1342 zig_panic("TODO handle C CompoundLiteralExprClass");
1619 emit_warning(c, stmt->getLocStart(), "TODO handle C CompoundLiteralExprClass");
1620 return nullptr;
13431621 case Stmt::ConvertVectorExprClass:
1344 zig_panic("TODO handle C ConvertVectorExprClass");
1622 emit_warning(c, stmt->getLocStart(), "TODO handle C ConvertVectorExprClass");
1623 return nullptr;
13451624 case Stmt::CoawaitExprClass:
1346 zig_panic("TODO handle C CoawaitExprClass");
1625 emit_warning(c, stmt->getLocStart(), "TODO handle C CoawaitExprClass");
1626 return nullptr;
13471627 case Stmt::CoyieldExprClass:
1348 zig_panic("TODO handle C CoyieldExprClass");
1628 emit_warning(c, stmt->getLocStart(), "TODO handle C CoyieldExprClass");
1629 return nullptr;
13491630 case Stmt::DependentCoawaitExprClass:
1350 zig_panic("TODO handle C DependentCoawaitExprClass");
1631 emit_warning(c, stmt->getLocStart(), "TODO handle C DependentCoawaitExprClass");
1632 return nullptr;
13511633 case Stmt::DependentScopeDeclRefExprClass:
1352 zig_panic("TODO handle C DependentScopeDeclRefExprClass");
1634 emit_warning(c, stmt->getLocStart(), "TODO handle C DependentScopeDeclRefExprClass");
1635 return nullptr;
13531636 case Stmt::DesignatedInitExprClass:
1354 zig_panic("TODO handle C DesignatedInitExprClass");
1637 emit_warning(c, stmt->getLocStart(), "TODO handle C DesignatedInitExprClass");
1638 return nullptr;
13551639 case Stmt::DesignatedInitUpdateExprClass:
1356 zig_panic("TODO handle C DesignatedInitUpdateExprClass");
1640 emit_warning(c, stmt->getLocStart(), "TODO handle C DesignatedInitUpdateExprClass");
1641 return nullptr;
13571642 case Stmt::ExprWithCleanupsClass:
1358 zig_panic("TODO handle C ExprWithCleanupsClass");
1643 emit_warning(c, stmt->getLocStart(), "TODO handle C ExprWithCleanupsClass");
1644 return nullptr;
13591645 case Stmt::ExpressionTraitExprClass:
1360 zig_panic("TODO handle C ExpressionTraitExprClass");
1646 emit_warning(c, stmt->getLocStart(), "TODO handle C ExpressionTraitExprClass");
1647 return nullptr;
13611648 case Stmt::ExtVectorElementExprClass:
1362 zig_panic("TODO handle C ExtVectorElementExprClass");
1649 emit_warning(c, stmt->getLocStart(), "TODO handle C ExtVectorElementExprClass");
1650 return nullptr;
13631651 case Stmt::FloatingLiteralClass:
1364 zig_panic("TODO handle C FloatingLiteralClass");
1652 emit_warning(c, stmt->getLocStart(), "TODO handle C FloatingLiteralClass");
1653 return nullptr;
13651654 case Stmt::FunctionParmPackExprClass:
1366 zig_panic("TODO handle C FunctionParmPackExprClass");
1655 emit_warning(c, stmt->getLocStart(), "TODO handle C FunctionParmPackExprClass");
1656 return nullptr;
13671657 case Stmt::GNUNullExprClass:
1368 zig_panic("TODO handle C GNUNullExprClass");
1658 emit_warning(c, stmt->getLocStart(), "TODO handle C GNUNullExprClass");
1659 return nullptr;
13691660 case Stmt::GenericSelectionExprClass:
1370 zig_panic("TODO handle C GenericSelectionExprClass");
1661 emit_warning(c, stmt->getLocStart(), "TODO handle C GenericSelectionExprClass");
1662 return nullptr;
13711663 case Stmt::ImaginaryLiteralClass:
1372 zig_panic("TODO handle C ImaginaryLiteralClass");
1664 emit_warning(c, stmt->getLocStart(), "TODO handle C ImaginaryLiteralClass");
1665 return nullptr;
13731666 case Stmt::ImplicitValueInitExprClass:
1374 zig_panic("TODO handle C ImplicitValueInitExprClass");
1667 emit_warning(c, stmt->getLocStart(), "TODO handle C ImplicitValueInitExprClass");
1668 return nullptr;
13751669 case Stmt::InitListExprClass:
1376 zig_panic("TODO handle C InitListExprClass");
1670 emit_warning(c, stmt->getLocStart(), "TODO handle C InitListExprClass");
1671 return nullptr;
13771672 case Stmt::LambdaExprClass:
1378 zig_panic("TODO handle C LambdaExprClass");
1673 emit_warning(c, stmt->getLocStart(), "TODO handle C LambdaExprClass");
1674 return nullptr;
13791675 case Stmt::MSPropertyRefExprClass:
1380 zig_panic("TODO handle C MSPropertyRefExprClass");
1676 emit_warning(c, stmt->getLocStart(), "TODO handle C MSPropertyRefExprClass");
1677 return nullptr;
13811678 case Stmt::MSPropertySubscriptExprClass:
1382 zig_panic("TODO handle C MSPropertySubscriptExprClass");
1679 emit_warning(c, stmt->getLocStart(), "TODO handle C MSPropertySubscriptExprClass");
1680 return nullptr;
13831681 case Stmt::MaterializeTemporaryExprClass:
1384 zig_panic("TODO handle C MaterializeTemporaryExprClass");
1682 emit_warning(c, stmt->getLocStart(), "TODO handle C MaterializeTemporaryExprClass");
1683 return nullptr;
13851684 case Stmt::MemberExprClass:
1386 zig_panic("TODO handle C MemberExprClass");
1685 emit_warning(c, stmt->getLocStart(), "TODO handle C MemberExprClass");
1686 return nullptr;
13871687 case Stmt::NoInitExprClass:
1388 zig_panic("TODO handle C NoInitExprClass");
1688 emit_warning(c, stmt->getLocStart(), "TODO handle C NoInitExprClass");
1689 return nullptr;
13891690 case Stmt::OMPArraySectionExprClass:
1390 zig_panic("TODO handle C OMPArraySectionExprClass");
1691 emit_warning(c, stmt->getLocStart(), "TODO handle C OMPArraySectionExprClass");
1692 return nullptr;
13911693 case Stmt::ObjCArrayLiteralClass:
1392 zig_panic("TODO handle C ObjCArrayLiteralClass");
1694 emit_warning(c, stmt->getLocStart(), "TODO handle C ObjCArrayLiteralClass");
1695 return nullptr;
13931696 case Stmt::ObjCAvailabilityCheckExprClass:
1394 zig_panic("TODO handle C ObjCAvailabilityCheckExprClass");
1697 emit_warning(c, stmt->getLocStart(), "TODO handle C ObjCAvailabilityCheckExprClass");
1698 return nullptr;
13951699 case Stmt::ObjCBoolLiteralExprClass:
1396 zig_panic("TODO handle C ObjCBoolLiteralExprClass");
1700 emit_warning(c, stmt->getLocStart(), "TODO handle C ObjCBoolLiteralExprClass");
1701 return nullptr;
13971702 case Stmt::ObjCBoxedExprClass:
1398 zig_panic("TODO handle C ObjCBoxedExprClass");
1703 emit_warning(c, stmt->getLocStart(), "TODO handle C ObjCBoxedExprClass");
1704 return nullptr;
13991705 case Stmt::ObjCDictionaryLiteralClass:
1400 zig_panic("TODO handle C ObjCDictionaryLiteralClass");
1706 emit_warning(c, stmt->getLocStart(), "TODO handle C ObjCDictionaryLiteralClass");
1707 return nullptr;
14011708 case Stmt::ObjCEncodeExprClass:
1402 zig_panic("TODO handle C ObjCEncodeExprClass");
1709 emit_warning(c, stmt->getLocStart(), "TODO handle C ObjCEncodeExprClass");
1710 return nullptr;
14031711 case Stmt::ObjCIndirectCopyRestoreExprClass:
1404 zig_panic("TODO handle C ObjCIndirectCopyRestoreExprClass");
1712 emit_warning(c, stmt->getLocStart(), "TODO handle C ObjCIndirectCopyRestoreExprClass");
1713 return nullptr;
14051714 case Stmt::ObjCIsaExprClass:
1406 zig_panic("TODO handle C ObjCIsaExprClass");
1715 emit_warning(c, stmt->getLocStart(), "TODO handle C ObjCIsaExprClass");
1716 return nullptr;
14071717 case Stmt::ObjCIvarRefExprClass:
1408 zig_panic("TODO handle C ObjCIvarRefExprClass");
1718 emit_warning(c, stmt->getLocStart(), "TODO handle C ObjCIvarRefExprClass");
1719 return nullptr;
14091720 case Stmt::ObjCMessageExprClass:
1410 zig_panic("TODO handle C ObjCMessageExprClass");
1721 emit_warning(c, stmt->getLocStart(), "TODO handle C ObjCMessageExprClass");
1722 return nullptr;
14111723 case Stmt::ObjCPropertyRefExprClass:
1412 zig_panic("TODO handle C ObjCPropertyRefExprClass");
1724 emit_warning(c, stmt->getLocStart(), "TODO handle C ObjCPropertyRefExprClass");
1725 return nullptr;
14131726 case Stmt::ObjCProtocolExprClass:
1414 zig_panic("TODO handle C ObjCProtocolExprClass");
1727 emit_warning(c, stmt->getLocStart(), "TODO handle C ObjCProtocolExprClass");
1728 return nullptr;
14151729 case Stmt::ObjCSelectorExprClass:
1416 zig_panic("TODO handle C ObjCSelectorExprClass");
1730 emit_warning(c, stmt->getLocStart(), "TODO handle C ObjCSelectorExprClass");
1731 return nullptr;
14171732 case Stmt::ObjCStringLiteralClass:
1418 zig_panic("TODO handle C ObjCStringLiteralClass");
1733 emit_warning(c, stmt->getLocStart(), "TODO handle C ObjCStringLiteralClass");
1734 return nullptr;
14191735 case Stmt::ObjCSubscriptRefExprClass:
1420 zig_panic("TODO handle C ObjCSubscriptRefExprClass");
1736 emit_warning(c, stmt->getLocStart(), "TODO handle C ObjCSubscriptRefExprClass");
1737 return nullptr;
14211738 case Stmt::OffsetOfExprClass:
1422 zig_panic("TODO handle C OffsetOfExprClass");
1739 emit_warning(c, stmt->getLocStart(), "TODO handle C OffsetOfExprClass");
1740 return nullptr;
14231741 case Stmt::OpaqueValueExprClass:
1424 zig_panic("TODO handle C OpaqueValueExprClass");
1742 emit_warning(c, stmt->getLocStart(), "TODO handle C OpaqueValueExprClass");
1743 return nullptr;
14251744 case Stmt::UnresolvedLookupExprClass:
1426 zig_panic("TODO handle C UnresolvedLookupExprClass");
1745 emit_warning(c, stmt->getLocStart(), "TODO handle C UnresolvedLookupExprClass");
1746 return nullptr;
14271747 case Stmt::UnresolvedMemberExprClass:
1428 zig_panic("TODO handle C UnresolvedMemberExprClass");
1748 emit_warning(c, stmt->getLocStart(), "TODO handle C UnresolvedMemberExprClass");
1749 return nullptr;
14291750 case Stmt::PackExpansionExprClass:
1430 zig_panic("TODO handle C PackExpansionExprClass");
1751 emit_warning(c, stmt->getLocStart(), "TODO handle C PackExpansionExprClass");
1752 return nullptr;
14311753 case Stmt::ParenExprClass:
1432 zig_panic("TODO handle C ParenExprClass");
1754 emit_warning(c, stmt->getLocStart(), "TODO handle C ParenExprClass");
1755 return nullptr;
14331756 case Stmt::ParenListExprClass:
1434 zig_panic("TODO handle C ParenListExprClass");
1757 emit_warning(c, stmt->getLocStart(), "TODO handle C ParenListExprClass");
1758 return nullptr;
14351759 case Stmt::PredefinedExprClass:
1436 zig_panic("TODO handle C PredefinedExprClass");
1760 emit_warning(c, stmt->getLocStart(), "TODO handle C PredefinedExprClass");
1761 return nullptr;
14371762 case Stmt::PseudoObjectExprClass:
1438 zig_panic("TODO handle C PseudoObjectExprClass");
1763 emit_warning(c, stmt->getLocStart(), "TODO handle C PseudoObjectExprClass");
1764 return nullptr;
14391765 case Stmt::ShuffleVectorExprClass:
1440 zig_panic("TODO handle C ShuffleVectorExprClass");
1766 emit_warning(c, stmt->getLocStart(), "TODO handle C ShuffleVectorExprClass");
1767 return nullptr;
14411768 case Stmt::SizeOfPackExprClass:
1442 zig_panic("TODO handle C SizeOfPackExprClass");
1769 emit_warning(c, stmt->getLocStart(), "TODO handle C SizeOfPackExprClass");
1770 return nullptr;
14431771 case Stmt::StmtExprClass:
1444 zig_panic("TODO handle C StmtExprClass");
1772 emit_warning(c, stmt->getLocStart(), "TODO handle C StmtExprClass");
1773 return nullptr;
14451774 case Stmt::StringLiteralClass:
1446 zig_panic("TODO handle C StringLiteralClass");
1775 emit_warning(c, stmt->getLocStart(), "TODO handle C StringLiteralClass");
1776 return nullptr;
14471777 case Stmt::SubstNonTypeTemplateParmExprClass:
1448 zig_panic("TODO handle C SubstNonTypeTemplateParmExprClass");
1778 emit_warning(c, stmt->getLocStart(), "TODO handle C SubstNonTypeTemplateParmExprClass");
1779 return nullptr;
14491780 case Stmt::SubstNonTypeTemplateParmPackExprClass:
1450 zig_panic("TODO handle C SubstNonTypeTemplateParmPackExprClass");
1781 emit_warning(c, stmt->getLocStart(), "TODO handle C SubstNonTypeTemplateParmPackExprClass");
1782 return nullptr;
14511783 case Stmt::TypeTraitExprClass:
1452 zig_panic("TODO handle C TypeTraitExprClass");
1784 emit_warning(c, stmt->getLocStart(), "TODO handle C TypeTraitExprClass");
1785 return nullptr;
14531786 case Stmt::TypoExprClass:
1454 zig_panic("TODO handle C TypoExprClass");
1787 emit_warning(c, stmt->getLocStart(), "TODO handle C TypoExprClass");
1788 return nullptr;
14551789 case Stmt::UnaryExprOrTypeTraitExprClass:
1456 zig_panic("TODO handle C UnaryExprOrTypeTraitExprClass");
1790 emit_warning(c, stmt->getLocStart(), "TODO handle C UnaryExprOrTypeTraitExprClass");
1791 return nullptr;
14571792 case Stmt::VAArgExprClass:
1458 zig_panic("TODO handle C VAArgExprClass");
1793 emit_warning(c, stmt->getLocStart(), "TODO handle C VAArgExprClass");
1794 return nullptr;
14591795 case Stmt::ForStmtClass:
1460 zig_panic("TODO handle C ForStmtClass");
1796 emit_warning(c, stmt->getLocStart(), "TODO handle C ForStmtClass");
1797 return nullptr;
14611798 case Stmt::GotoStmtClass:
1462 zig_panic("TODO handle C GotoStmtClass");
1799 emit_warning(c, stmt->getLocStart(), "TODO handle C GotoStmtClass");
1800 return nullptr;
14631801 case Stmt::IfStmtClass:
1464 zig_panic("TODO handle C IfStmtClass");
1802 emit_warning(c, stmt->getLocStart(), "TODO handle C IfStmtClass");
1803 return nullptr;
14651804 case Stmt::IndirectGotoStmtClass:
1466 zig_panic("TODO handle C IndirectGotoStmtClass");
1805 emit_warning(c, stmt->getLocStart(), "TODO handle C IndirectGotoStmtClass");
1806 return nullptr;
14671807 case Stmt::LabelStmtClass:
1468 zig_panic("TODO handle C LabelStmtClass");
1808 emit_warning(c, stmt->getLocStart(), "TODO handle C LabelStmtClass");
1809 return nullptr;
14691810 case Stmt::MSDependentExistsStmtClass:
1470 zig_panic("TODO handle C MSDependentExistsStmtClass");
1811 emit_warning(c, stmt->getLocStart(), "TODO handle C MSDependentExistsStmtClass");
1812 return nullptr;
14711813 case Stmt::NullStmtClass:
1472 zig_panic("TODO handle C NullStmtClass");
1814 emit_warning(c, stmt->getLocStart(), "TODO handle C NullStmtClass");
1815 return nullptr;
14731816 case Stmt::OMPAtomicDirectiveClass:
1474 zig_panic("TODO handle C OMPAtomicDirectiveClass");
1817 emit_warning(c, stmt->getLocStart(), "TODO handle C OMPAtomicDirectiveClass");
1818 return nullptr;
14751819 case Stmt::OMPBarrierDirectiveClass:
1476 zig_panic("TODO handle C OMPBarrierDirectiveClass");
1820 emit_warning(c, stmt->getLocStart(), "TODO handle C OMPBarrierDirectiveClass");
1821 return nullptr;
14771822 case Stmt::OMPCancelDirectiveClass:
1478 zig_panic("TODO handle C OMPCancelDirectiveClass");
1823 emit_warning(c, stmt->getLocStart(), "TODO handle C OMPCancelDirectiveClass");
1824 return nullptr;
14791825 case Stmt::OMPCancellationPointDirectiveClass:
1480 zig_panic("TODO handle C OMPCancellationPointDirectiveClass");
1826 emit_warning(c, stmt->getLocStart(), "TODO handle C OMPCancellationPointDirectiveClass");
1827 return nullptr;
14811828 case Stmt::OMPCriticalDirectiveClass:
1482 zig_panic("TODO handle C OMPCriticalDirectiveClass");
1829 emit_warning(c, stmt->getLocStart(), "TODO handle C OMPCriticalDirectiveClass");
1830 return nullptr;
14831831 case Stmt::OMPFlushDirectiveClass:
1484 zig_panic("TODO handle C OMPFlushDirectiveClass");
1832 emit_warning(c, stmt->getLocStart(), "TODO handle C OMPFlushDirectiveClass");
1833 return nullptr;
14851834 case Stmt::OMPDistributeDirectiveClass:
1486 zig_panic("TODO handle C OMPDistributeDirectiveClass");
1835 emit_warning(c, stmt->getLocStart(), "TODO handle C OMPDistributeDirectiveClass");
1836 return nullptr;
14871837 case Stmt::OMPDistributeParallelForDirectiveClass:
1488 zig_panic("TODO handle C OMPDistributeParallelForDirectiveClass");
1838 emit_warning(c, stmt->getLocStart(), "TODO handle C OMPDistributeParallelForDirectiveClass");
1839 return nullptr;
14891840 case Stmt::OMPDistributeParallelForSimdDirectiveClass:
1490 zig_panic("TODO handle C OMPDistributeParallelForSimdDirectiveClass");
1841 emit_warning(c, stmt->getLocStart(), "TODO handle C OMPDistributeParallelForSimdDirectiveClass");
1842 return nullptr;
14911843 case Stmt::OMPDistributeSimdDirectiveClass:
1492 zig_panic("TODO handle C OMPDistributeSimdDirectiveClass");
1844 emit_warning(c, stmt->getLocStart(), "TODO handle C OMPDistributeSimdDirectiveClass");
1845 return nullptr;
14931846 case Stmt::OMPForDirectiveClass:
1494 zig_panic("TODO handle C OMPForDirectiveClass");
1847 emit_warning(c, stmt->getLocStart(), "TODO handle C OMPForDirectiveClass");
1848 return nullptr;
14951849 case Stmt::OMPForSimdDirectiveClass:
1496 zig_panic("TODO handle C OMPForSimdDirectiveClass");
1850 emit_warning(c, stmt->getLocStart(), "TODO handle C OMPForSimdDirectiveClass");
1851 return nullptr;
14971852 case Stmt::OMPParallelForDirectiveClass:
1498 zig_panic("TODO handle C OMPParallelForDirectiveClass");
1853 emit_warning(c, stmt->getLocStart(), "TODO handle C OMPParallelForDirectiveClass");
1854 return nullptr;
14991855 case Stmt::OMPParallelForSimdDirectiveClass:
1500 zig_panic("TODO handle C OMPParallelForSimdDirectiveClass");
1856 emit_warning(c, stmt->getLocStart(), "TODO handle C OMPParallelForSimdDirectiveClass");
1857 return nullptr;
15011858 case Stmt::OMPSimdDirectiveClass:
1502 zig_panic("TODO handle C OMPSimdDirectiveClass");
1859 emit_warning(c, stmt->getLocStart(), "TODO handle C OMPSimdDirectiveClass");
1860 return nullptr;
15031861 case Stmt::OMPTargetParallelForSimdDirectiveClass:
1504 zig_panic("TODO handle C OMPTargetParallelForSimdDirectiveClass");
1862 emit_warning(c, stmt->getLocStart(), "TODO handle C OMPTargetParallelForSimdDirectiveClass");
1863 return nullptr;
15051864 case Stmt::OMPTargetSimdDirectiveClass:
1506 zig_panic("TODO handle C OMPTargetSimdDirectiveClass");
1865 emit_warning(c, stmt->getLocStart(), "TODO handle C OMPTargetSimdDirectiveClass");
1866 return nullptr;
15071867 case Stmt::OMPTargetTeamsDistributeDirectiveClass:
1508 zig_panic("TODO handle C OMPTargetTeamsDistributeDirectiveClass");
1868 emit_warning(c, stmt->getLocStart(), "TODO handle C OMPTargetTeamsDistributeDirectiveClass");
1869 return nullptr;
15091870 case Stmt::OMPTargetTeamsDistributeParallelForDirectiveClass:
1510 zig_panic("TODO handle C OMPTargetTeamsDistributeParallelForDirectiveClass");
1871 emit_warning(c, stmt->getLocStart(), "TODO handle C OMPTargetTeamsDistributeParallelForDirectiveClass");
1872 return nullptr;
15111873 case Stmt::OMPTargetTeamsDistributeParallelForSimdDirectiveClass:
1512 zig_panic("TODO handle C OMPTargetTeamsDistributeParallelForSimdDirectiveClass");
1874 emit_warning(c, stmt->getLocStart(), "TODO handle C OMPTargetTeamsDistributeParallelForSimdDirectiveClass");
1875 return nullptr;
15131876 case Stmt::OMPTargetTeamsDistributeSimdDirectiveClass:
1514 zig_panic("TODO handle C OMPTargetTeamsDistributeSimdDirectiveClass");
1877 emit_warning(c, stmt->getLocStart(), "TODO handle C OMPTargetTeamsDistributeSimdDirectiveClass");
1878 return nullptr;
15151879 case Stmt::OMPTaskLoopDirectiveClass:
1516 zig_panic("TODO handle C OMPTaskLoopDirectiveClass");
1880 emit_warning(c, stmt->getLocStart(), "TODO handle C OMPTaskLoopDirectiveClass");
1881 return nullptr;
15171882 case Stmt::OMPTaskLoopSimdDirectiveClass:
1518 zig_panic("TODO handle C OMPTaskLoopSimdDirectiveClass");
1883 emit_warning(c, stmt->getLocStart(), "TODO handle C OMPTaskLoopSimdDirectiveClass");
1884 return nullptr;
15191885 case Stmt::OMPTeamsDistributeDirectiveClass:
1520 zig_panic("TODO handle C OMPTeamsDistributeDirectiveClass");
1886 emit_warning(c, stmt->getLocStart(), "TODO handle C OMPTeamsDistributeDirectiveClass");
1887 return nullptr;
15211888 case Stmt::OMPTeamsDistributeParallelForDirectiveClass:
1522 zig_panic("TODO handle C OMPTeamsDistributeParallelForDirectiveClass");
1889 emit_warning(c, stmt->getLocStart(), "TODO handle C OMPTeamsDistributeParallelForDirectiveClass");
1890 return nullptr;
15231891 case Stmt::OMPTeamsDistributeParallelForSimdDirectiveClass:
1524 zig_panic("TODO handle C OMPTeamsDistributeParallelForSimdDirectiveClass");
1892 emit_warning(c, stmt->getLocStart(), "TODO handle C OMPTeamsDistributeParallelForSimdDirectiveClass");
1893 return nullptr;
15251894 case Stmt::OMPTeamsDistributeSimdDirectiveClass:
1526 zig_panic("TODO handle C OMPTeamsDistributeSimdDirectiveClass");
1895 emit_warning(c, stmt->getLocStart(), "TODO handle C OMPTeamsDistributeSimdDirectiveClass");
1896 return nullptr;
15271897 case Stmt::OMPMasterDirectiveClass:
1528 zig_panic("TODO handle C OMPMasterDirectiveClass");
1898 emit_warning(c, stmt->getLocStart(), "TODO handle C OMPMasterDirectiveClass");
1899 return nullptr;
15291900 case Stmt::OMPOrderedDirectiveClass:
1530 zig_panic("TODO handle C OMPOrderedDirectiveClass");
1901 emit_warning(c, stmt->getLocStart(), "TODO handle C OMPOrderedDirectiveClass");
1902 return nullptr;
15311903 case Stmt::OMPParallelDirectiveClass:
1532 zig_panic("TODO handle C OMPParallelDirectiveClass");
1904 emit_warning(c, stmt->getLocStart(), "TODO handle C OMPParallelDirectiveClass");
1905 return nullptr;
15331906 case Stmt::OMPParallelSectionsDirectiveClass:
1534 zig_panic("TODO handle C OMPParallelSectionsDirectiveClass");
1907 emit_warning(c, stmt->getLocStart(), "TODO handle C OMPParallelSectionsDirectiveClass");
1908 return nullptr;
15351909 case Stmt::OMPSectionDirectiveClass:
1536 zig_panic("TODO handle C OMPSectionDirectiveClass");
1910 emit_warning(c, stmt->getLocStart(), "TODO handle C OMPSectionDirectiveClass");
1911 return nullptr;
15371912 case Stmt::OMPSectionsDirectiveClass:
1538 zig_panic("TODO handle C OMPSectionsDirectiveClass");
1913 emit_warning(c, stmt->getLocStart(), "TODO handle C OMPSectionsDirectiveClass");
1914 return nullptr;
15391915 case Stmt::OMPSingleDirectiveClass:
1540 zig_panic("TODO handle C OMPSingleDirectiveClass");
1916 emit_warning(c, stmt->getLocStart(), "TODO handle C OMPSingleDirectiveClass");
1917 return nullptr;
15411918 case Stmt::OMPTargetDataDirectiveClass:
1542 zig_panic("TODO handle C OMPTargetDataDirectiveClass");
1919 emit_warning(c, stmt->getLocStart(), "TODO handle C OMPTargetDataDirectiveClass");
1920 return nullptr;
15431921 case Stmt::OMPTargetDirectiveClass:
1544 zig_panic("TODO handle C OMPTargetDirectiveClass");
1922 emit_warning(c, stmt->getLocStart(), "TODO handle C OMPTargetDirectiveClass");
1923 return nullptr;
15451924 case Stmt::OMPTargetEnterDataDirectiveClass:
1546 zig_panic("TODO handle C OMPTargetEnterDataDirectiveClass");
1925 emit_warning(c, stmt->getLocStart(), "TODO handle C OMPTargetEnterDataDirectiveClass");
1926 return nullptr;
15471927 case Stmt::OMPTargetExitDataDirectiveClass:
1548 zig_panic("TODO handle C OMPTargetExitDataDirectiveClass");
1928 emit_warning(c, stmt->getLocStart(), "TODO handle C OMPTargetExitDataDirectiveClass");
1929 return nullptr;
15491930 case Stmt::OMPTargetParallelDirectiveClass:
1550 zig_panic("TODO handle C OMPTargetParallelDirectiveClass");
1931 emit_warning(c, stmt->getLocStart(), "TODO handle C OMPTargetParallelDirectiveClass");
1932 return nullptr;
15511933 case Stmt::OMPTargetParallelForDirectiveClass:
1552 zig_panic("TODO handle C OMPTargetParallelForDirectiveClass");
1934 emit_warning(c, stmt->getLocStart(), "TODO handle C OMPTargetParallelForDirectiveClass");
1935 return nullptr;
15531936 case Stmt::OMPTargetTeamsDirectiveClass:
1554 zig_panic("TODO handle C OMPTargetTeamsDirectiveClass");
1937 emit_warning(c, stmt->getLocStart(), "TODO handle C OMPTargetTeamsDirectiveClass");
1938 return nullptr;
15551939 case Stmt::OMPTargetUpdateDirectiveClass:
1556 zig_panic("TODO handle C OMPTargetUpdateDirectiveClass");
1940 emit_warning(c, stmt->getLocStart(), "TODO handle C OMPTargetUpdateDirectiveClass");
1941 return nullptr;
15571942 case Stmt::OMPTaskDirectiveClass:
1558 zig_panic("TODO handle C OMPTaskDirectiveClass");
1943 emit_warning(c, stmt->getLocStart(), "TODO handle C OMPTaskDirectiveClass");
1944 return nullptr;
15591945 case Stmt::OMPTaskgroupDirectiveClass:
1560 zig_panic("TODO handle C OMPTaskgroupDirectiveClass");
1946 emit_warning(c, stmt->getLocStart(), "TODO handle C OMPTaskgroupDirectiveClass");
1947 return nullptr;
15611948 case Stmt::OMPTaskwaitDirectiveClass:
1562 zig_panic("TODO handle C OMPTaskwaitDirectiveClass");
1949 emit_warning(c, stmt->getLocStart(), "TODO handle C OMPTaskwaitDirectiveClass");
1950 return nullptr;
15631951 case Stmt::OMPTaskyieldDirectiveClass:
1564 zig_panic("TODO handle C OMPTaskyieldDirectiveClass");
1952 emit_warning(c, stmt->getLocStart(), "TODO handle C OMPTaskyieldDirectiveClass");
1953 return nullptr;
15651954 case Stmt::OMPTeamsDirectiveClass:
1566 zig_panic("TODO handle C OMPTeamsDirectiveClass");
1955 emit_warning(c, stmt->getLocStart(), "TODO handle C OMPTeamsDirectiveClass");
1956 return nullptr;
15671957 case Stmt::ObjCAtCatchStmtClass:
1568 zig_panic("TODO handle C ObjCAtCatchStmtClass");
1958 emit_warning(c, stmt->getLocStart(), "TODO handle C ObjCAtCatchStmtClass");
1959 return nullptr;
15691960 case Stmt::ObjCAtFinallyStmtClass:
1570 zig_panic("TODO handle C ObjCAtFinallyStmtClass");
1961 emit_warning(c, stmt->getLocStart(), "TODO handle C ObjCAtFinallyStmtClass");
1962 return nullptr;
15711963 case Stmt::ObjCAtSynchronizedStmtClass:
1572 zig_panic("TODO handle C ObjCAtSynchronizedStmtClass");
1964 emit_warning(c, stmt->getLocStart(), "TODO handle C ObjCAtSynchronizedStmtClass");
1965 return nullptr;
15731966 case Stmt::ObjCAtThrowStmtClass:
1574 zig_panic("TODO handle C ObjCAtThrowStmtClass");
1967 emit_warning(c, stmt->getLocStart(), "TODO handle C ObjCAtThrowStmtClass");
1968 return nullptr;
15751969 case Stmt::ObjCAtTryStmtClass:
1576 zig_panic("TODO handle C ObjCAtTryStmtClass");
1970 emit_warning(c, stmt->getLocStart(), "TODO handle C ObjCAtTryStmtClass");
1971 return nullptr;
15771972 case Stmt::ObjCAutoreleasePoolStmtClass:
1578 zig_panic("TODO handle C ObjCAutoreleasePoolStmtClass");
1973 emit_warning(c, stmt->getLocStart(), "TODO handle C ObjCAutoreleasePoolStmtClass");
1974 return nullptr;
15791975 case Stmt::ObjCForCollectionStmtClass:
1580 zig_panic("TODO handle C ObjCForCollectionStmtClass");
1976 emit_warning(c, stmt->getLocStart(), "TODO handle C ObjCForCollectionStmtClass");
1977 return nullptr;
15811978 case Stmt::SEHExceptStmtClass:
1582 zig_panic("TODO handle C SEHExceptStmtClass");
1979 emit_warning(c, stmt->getLocStart(), "TODO handle C SEHExceptStmtClass");
1980 return nullptr;
15831981 case Stmt::SEHFinallyStmtClass:
1584 zig_panic("TODO handle C SEHFinallyStmtClass");
1982 emit_warning(c, stmt->getLocStart(), "TODO handle C SEHFinallyStmtClass");
1983 return nullptr;
15851984 case Stmt::SEHLeaveStmtClass:
1586 zig_panic("TODO handle C SEHLeaveStmtClass");
1985 emit_warning(c, stmt->getLocStart(), "TODO handle C SEHLeaveStmtClass");
1986 return nullptr;
15871987 case Stmt::SEHTryStmtClass:
1588 zig_panic("TODO handle C SEHTryStmtClass");
1988 emit_warning(c, stmt->getLocStart(), "TODO handle C SEHTryStmtClass");
1989 return nullptr;
15891990 }
15901991 zig_unreachable();
15911992}
......@@ -1642,6 +2043,11 @@ static void visit_fn_decl(Context *c, const FunctionDecl *fn_decl) {
16422043 AstNode *fn_def_node = trans_create_node(c, NodeTypeFnDef);
16432044 fn_def_node->data.fn_def.fn_proto = proto_node;
16442045 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
16462052 proto_node->data.fn_proto.fn_def_node = fn_def_node;
16472053 c->root->data.root.top_level_decls.append(fn_def_node);