authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2019-02-16 13:34:32-05:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2019-02-16 14:09:00-05:00
logf4c5bcfea5f02dec30d7adede0550c95af424c71
tree4d80a5a0bb98870eb0e2a990b2c6bfc12898cbb5
parentf57182456d52615ece1133db9c33ef57e3ae187b
signaturelock-open Commit is signed but in an unrecognized format.

refactor translate-c - no more using namespace clang

this is in preparation for #1964

1 files changed, 1138 insertions(+), 1140 deletions(-)

src/translate_c.cpp+1138-1140
......@@ -30,8 +30,6 @@
3030
3131#include <string.h>
3232
33using namespace clang;
34
3533struct Alias {
3634 Buf *new_name;
3735 Buf *canon_name;
......@@ -87,13 +85,13 @@ struct Context {
8785 HashMap<const void *, AstNode *, ptr_hash, ptr_eq> decl_table;
8886 HashMap<Buf *, AstNode *, buf_hash, buf_eql_buf> macro_table;
8987 HashMap<Buf *, AstNode *, buf_hash, buf_eql_buf> global_table;
90 SourceManager *source_manager;
88 clang::SourceManager *source_manager;
9189 ZigList<Alias> aliases;
9290 AstNode *source_node;
9391 bool warnings_on;
9492
9593 CodeGen *codegen;
96 ASTContext *ctx;
94 clang::ASTContext *ctx;
9795
9896 TransScopeRoot *global_scope;
9997 HashMap<Buf *, bool, buf_hash, buf_eql_buf> ptr_params;
......@@ -117,21 +115,21 @@ static TransScopeSwitch *trans_scope_switch_create(Context *c, TransScope *paren
117115
118116static TransScopeBlock *trans_scope_block_find(TransScope *scope);
119117
120static AstNode *resolve_record_decl(Context *c, const RecordDecl *record_decl);
121static AstNode *resolve_enum_decl(Context *c, const EnumDecl *enum_decl);
122static AstNode *resolve_typedef_decl(Context *c, const TypedefNameDecl *typedef_decl);
118static AstNode *resolve_record_decl(Context *c, const clang::RecordDecl *record_decl);
119static AstNode *resolve_enum_decl(Context *c, const clang::EnumDecl *enum_decl);
120static AstNode *resolve_typedef_decl(Context *c, const clang::TypedefNameDecl *typedef_decl);
123121
124static int trans_stmt_extra(Context *c, TransScope *scope, const Stmt *stmt,
122static int trans_stmt_extra(Context *c, TransScope *scope, const clang::Stmt *stmt,
125123 ResultUsed result_used, TransLRValue lrval,
126124 AstNode **out_node, TransScope **out_child_scope,
127125 TransScope **out_node_scope);
128static TransScope *trans_stmt(Context *c, TransScope *scope, const Stmt *stmt, AstNode **out_node);
129static AstNode *trans_expr(Context *c, ResultUsed result_used, TransScope *scope, const Expr *expr, TransLRValue lrval);
130static AstNode *trans_qual_type(Context *c, QualType qt, const SourceLocation &source_loc);
131static AstNode *trans_bool_expr(Context *c, ResultUsed result_used, TransScope *scope, const Expr *expr, TransLRValue lrval);
126static TransScope *trans_stmt(Context *c, TransScope *scope, const clang::Stmt *stmt, AstNode **out_node);
127static AstNode *trans_expr(Context *c, ResultUsed result_used, TransScope *scope, const clang::Expr *expr, TransLRValue lrval);
128static AstNode *trans_qual_type(Context *c, clang::QualType qt, const clang::SourceLocation &source_loc);
129static AstNode *trans_bool_expr(Context *c, ResultUsed result_used, TransScope *scope, const clang::Expr *expr, TransLRValue lrval);
132130
133131ATTRIBUTE_PRINTF(3, 4)
134static void emit_warning(Context *c, const SourceLocation &sl, const char *format, ...) {
132static void emit_warning(Context *c, const clang::SourceLocation &sl, const char *format, ...) {
135133 if (!c->warnings_on) {
136134 return;
137135 }
......@@ -471,8 +469,8 @@ static Buf *string_ref_to_buf(StringRef string_ref) {
471469 return buf_create_from_mem((const char *)string_ref.bytes_begin(), string_ref.size());
472470}
473471
474static const char *decl_name(const Decl *decl) {
475 const NamedDecl *named_decl = static_cast<const NamedDecl *>(decl);
472static const char *decl_name(const clang::Decl *decl) {
473 const clang::NamedDecl *named_decl = static_cast<const clang::NamedDecl *>(decl);
476474 return (const char *)named_decl->getName().bytes_begin();
477475}
478476
......@@ -490,20 +488,20 @@ static AstNode *trans_create_node_apint(Context *c, const llvm::APSInt &aps_int)
490488
491489}
492490
493static const Type *qual_type_canon(QualType qt) {
491static const clang::Type *qual_type_canon(clang::QualType qt) {
494492 return qt.getCanonicalType().getTypePtr();
495493}
496494
497static QualType get_expr_qual_type(Context *c, const Expr *expr) {
495static clang::QualType get_expr_qual_type(Context *c, const clang::Expr *expr) {
498496 // String literals in C are `char *` but they should really be `const char *`.
499 if (expr->getStmtClass() == Stmt::ImplicitCastExprClass) {
500 const ImplicitCastExpr *cast_expr = static_cast<const ImplicitCastExpr *>(expr);
501 if (cast_expr->getCastKind() == CK_ArrayToPointerDecay) {
502 const Expr *sub_expr = cast_expr->getSubExpr();
503 if (sub_expr->getStmtClass() == Stmt::StringLiteralClass) {
504 QualType array_qt = sub_expr->getType();
505 const ArrayType *array_type = static_cast<const ArrayType *>(array_qt.getTypePtr());
506 QualType pointee_qt = array_type->getElementType();
497 if (expr->getStmtClass() == clang::Stmt::ImplicitCastExprClass) {
498 const clang::ImplicitCastExpr *cast_expr = static_cast<const clang::ImplicitCastExpr *>(expr);
499 if (cast_expr->getCastKind() == clang::CK_ArrayToPointerDecay) {
500 const clang::Expr *sub_expr = cast_expr->getSubExpr();
501 if (sub_expr->getStmtClass() == clang::Stmt::StringLiteralClass) {
502 clang::QualType array_qt = sub_expr->getType();
503 const clang::ArrayType *array_type = static_cast<const clang::ArrayType *>(array_qt.getTypePtr());
504 clang::QualType pointee_qt = array_type->getElementType();
507505 pointee_qt.addConst();
508506 return c->ctx->getPointerType(pointee_qt);
509507 }
......@@ -512,19 +510,19 @@ static QualType get_expr_qual_type(Context *c, const Expr *expr) {
512510 return expr->getType();
513511}
514512
515static QualType get_expr_qual_type_before_implicit_cast(Context *c, const Expr *expr) {
516 if (expr->getStmtClass() == Stmt::ImplicitCastExprClass) {
517 const ImplicitCastExpr *cast_expr = static_cast<const ImplicitCastExpr *>(expr);
513static clang::QualType get_expr_qual_type_before_implicit_cast(Context *c, const clang::Expr *expr) {
514 if (expr->getStmtClass() == clang::Stmt::ImplicitCastExprClass) {
515 const clang::ImplicitCastExpr *cast_expr = static_cast<const clang::ImplicitCastExpr *>(expr);
518516 return get_expr_qual_type(c, cast_expr->getSubExpr());
519517 }
520518 return expr->getType();
521519}
522520
523static AstNode *get_expr_type(Context *c, const Expr *expr) {
521static AstNode *get_expr_type(Context *c, const clang::Expr *expr) {
524522 return trans_qual_type(c, get_expr_qual_type(c, expr), expr->getLocStart());
525523}
526524
527static bool qual_types_equal(QualType t1, QualType t2) {
525static bool qual_types_equal(clang::QualType t1, clang::QualType t2) {
528526 if (t1.isConstQualified() != t2.isConstQualified()) {
529527 return false;
530528 }
......@@ -541,37 +539,37 @@ static bool is_c_void_type(AstNode *node) {
541539 return (node->type == NodeTypeSymbol && buf_eql_str(node->data.symbol_expr.symbol, "c_void"));
542540}
543541
544static bool expr_types_equal(Context *c, const Expr *expr1, const Expr *expr2) {
545 QualType t1 = get_expr_qual_type(c, expr1);
546 QualType t2 = get_expr_qual_type(c, expr2);
542static bool expr_types_equal(Context *c, const clang::Expr *expr1, const clang::Expr *expr2) {
543 clang::QualType t1 = get_expr_qual_type(c, expr1);
544 clang::QualType t2 = get_expr_qual_type(c, expr2);
547545
548546 return qual_types_equal(t1, t2);
549547}
550548
551static bool qual_type_is_ptr(QualType qt) {
552 const Type *ty = qual_type_canon(qt);
553 return ty->getTypeClass() == Type::Pointer;
549static bool qual_type_is_ptr(clang::QualType qt) {
550 const clang::Type *ty = qual_type_canon(qt);
551 return ty->getTypeClass() == clang::Type::Pointer;
554552}
555553
556static const FunctionProtoType *qual_type_get_fn_proto(QualType qt, bool *is_ptr) {
557 const Type *ty = qual_type_canon(qt);
554static const clang::FunctionProtoType *qual_type_get_fn_proto(clang::QualType qt, bool *is_ptr) {
555 const clang::Type *ty = qual_type_canon(qt);
558556 *is_ptr = false;
559557
560 if (ty->getTypeClass() == Type::Pointer) {
558 if (ty->getTypeClass() == clang::Type::Pointer) {
561559 *is_ptr = true;
562 const PointerType *pointer_ty = static_cast<const PointerType*>(ty);
563 QualType child_qt = pointer_ty->getPointeeType();
560 const clang::PointerType *pointer_ty = static_cast<const clang::PointerType*>(ty);
561 clang::QualType child_qt = pointer_ty->getPointeeType();
564562 ty = child_qt.getTypePtr();
565563 }
566564
567 if (ty->getTypeClass() == Type::FunctionProto) {
568 return static_cast<const FunctionProtoType*>(ty);
565 if (ty->getTypeClass() == clang::Type::FunctionProto) {
566 return static_cast<const clang::FunctionProtoType*>(ty);
569567 }
570568
571569 return nullptr;
572570}
573571
574static bool qual_type_is_fn_ptr(QualType qt) {
572static bool qual_type_is_fn_ptr(clang::QualType qt) {
575573 bool is_ptr;
576574 if (qual_type_get_fn_proto(qt, &is_ptr)) {
577575 return is_ptr;
......@@ -580,30 +578,30 @@ static bool qual_type_is_fn_ptr(QualType qt) {
580578 return false;
581579}
582580
583static uint32_t qual_type_int_bit_width(Context *c, const QualType &qt, const SourceLocation &source_loc) {
584 const Type *ty = qt.getTypePtr();
581static uint32_t qual_type_int_bit_width(Context *c, const clang::QualType &qt, const clang::SourceLocation &source_loc) {
582 const clang::Type *ty = qt.getTypePtr();
585583 switch (ty->getTypeClass()) {
586 case Type::Builtin:
584 case clang::Type::Builtin:
587585 {
588 const BuiltinType *builtin_ty = static_cast<const BuiltinType*>(ty);
586 const clang::BuiltinType *builtin_ty = static_cast<const clang::BuiltinType*>(ty);
589587 switch (builtin_ty->getKind()) {
590 case BuiltinType::Char_U:
591 case BuiltinType::UChar:
592 case BuiltinType::Char_S:
593 case BuiltinType::SChar:
588 case clang::BuiltinType::Char_U:
589 case clang::BuiltinType::UChar:
590 case clang::BuiltinType::Char_S:
591 case clang::BuiltinType::SChar:
594592 return 8;
595 case BuiltinType::UInt128:
596 case BuiltinType::Int128:
593 case clang::BuiltinType::UInt128:
594 case clang::BuiltinType::Int128:
597595 return 128;
598596 default:
599597 return 0;
600598 }
601599 zig_unreachable();
602600 }
603 case Type::Typedef:
601 case clang::Type::Typedef:
604602 {
605 const TypedefType *typedef_ty = static_cast<const TypedefType*>(ty);
606 const TypedefNameDecl *typedef_decl = typedef_ty->getDecl();
603 const clang::TypedefType *typedef_ty = static_cast<const clang::TypedefType*>(ty);
604 const clang::TypedefNameDecl *typedef_decl = typedef_ty->getDecl();
607605 const char *type_name = decl_name(typedef_decl);
608606 if (strcmp(type_name, "uint8_t") == 0 || strcmp(type_name, "int8_t") == 0) {
609607 return 8;
......@@ -624,8 +622,8 @@ static uint32_t qual_type_int_bit_width(Context *c, const QualType &qt, const So
624622}
625623
626624
627static AstNode *qual_type_to_log2_int_ref(Context *c, const QualType &qt,
628 const SourceLocation &source_loc)
625static AstNode *qual_type_to_log2_int_ref(Context *c, const clang::QualType &qt,
626 const clang::SourceLocation &source_loc)
629627{
630628 uint32_t int_bit_width = qual_type_int_bit_width(c, qt, source_loc);
631629 if (int_bit_width != 0) {
......@@ -643,7 +641,7 @@ static AstNode *qual_type_to_log2_int_ref(Context *c, const QualType &qt,
643641// FieldAccess
644642// FnCall (.builtin = true)
645643// Symbol "import"
646// StringLiteral "std"
644// clang::StringLiteral "std"
647645// Symbol "math"
648646// Symbol "Log2Int"
649647// zig_type_node
......@@ -657,21 +655,21 @@ static AstNode *qual_type_to_log2_int_ref(Context *c, const QualType &qt,
657655 return log2int_fn_call;
658656}
659657
660static bool qual_type_child_is_fn_proto(const QualType &qt) {
661 if (qt.getTypePtr()->getTypeClass() == Type::Paren) {
662 const ParenType *paren_type = static_cast<const ParenType *>(qt.getTypePtr());
663 if (paren_type->getInnerType()->getTypeClass() == Type::FunctionProto) {
658static bool qual_type_child_is_fn_proto(const clang::QualType &qt) {
659 if (qt.getTypePtr()->getTypeClass() == clang::Type::Paren) {
660 const clang::ParenType *paren_type = static_cast<const clang::ParenType *>(qt.getTypePtr());
661 if (paren_type->getInnerType()->getTypeClass() == clang::Type::FunctionProto) {
664662 return true;
665663 }
666 } else if (qt.getTypePtr()->getTypeClass() == Type::Attributed) {
667 const AttributedType *attr_type = static_cast<const AttributedType *>(qt.getTypePtr());
664 } else if (qt.getTypePtr()->getTypeClass() == clang::Type::Attributed) {
665 const clang::AttributedType *attr_type = static_cast<const clang::AttributedType *>(qt.getTypePtr());
668666 return qual_type_child_is_fn_proto(attr_type->getEquivalentType());
669667 }
670668 return false;
671669}
672670
673static AstNode* trans_c_cast(Context *c, const SourceLocation &source_location, QualType dest_type,
674 QualType src_type, AstNode *expr)
671static AstNode* trans_c_cast(Context *c, const clang::SourceLocation &source_location, clang::QualType dest_type,
672 clang::QualType src_type, AstNode *expr)
675673{
676674 if (qual_types_equal(dest_type, src_type)) {
677675 return expr;
......@@ -688,72 +686,72 @@ static AstNode* trans_c_cast(Context *c, const SourceLocation &source_location,
688686 return trans_create_node_fn_call_1(c, trans_qual_type(c, dest_type, source_location), expr);
689687}
690688
691static bool c_is_signed_integer(Context *c, QualType qt) {
692 const Type *c_type = qual_type_canon(qt);
693 if (c_type->getTypeClass() != Type::Builtin)
689static bool c_is_signed_integer(Context *c, clang::QualType qt) {
690 const clang::Type *c_type = qual_type_canon(qt);
691 if (c_type->getTypeClass() != clang::Type::Builtin)
694692 return false;
695 const BuiltinType *builtin_ty = static_cast<const BuiltinType*>(c_type);
693 const clang::BuiltinType *builtin_ty = static_cast<const clang::BuiltinType*>(c_type);
696694 switch (builtin_ty->getKind()) {
697 case BuiltinType::SChar:
698 case BuiltinType::Short:
699 case BuiltinType::Int:
700 case BuiltinType::Long:
701 case BuiltinType::LongLong:
702 case BuiltinType::Int128:
703 case BuiltinType::WChar_S:
695 case clang::BuiltinType::SChar:
696 case clang::BuiltinType::Short:
697 case clang::BuiltinType::Int:
698 case clang::BuiltinType::Long:
699 case clang::BuiltinType::LongLong:
700 case clang::BuiltinType::Int128:
701 case clang::BuiltinType::WChar_S:
704702 return true;
705703 default:
706704 return false;
707705 }
708706}
709707
710static bool c_is_unsigned_integer(Context *c, QualType qt) {
711 const Type *c_type = qual_type_canon(qt);
712 if (c_type->getTypeClass() != Type::Builtin)
708static bool c_is_unsigned_integer(Context *c, clang::QualType qt) {
709 const clang::Type *c_type = qual_type_canon(qt);
710 if (c_type->getTypeClass() != clang::Type::Builtin)
713711 return false;
714 const BuiltinType *builtin_ty = static_cast<const BuiltinType*>(c_type);
712 const clang::BuiltinType *builtin_ty = static_cast<const clang::BuiltinType*>(c_type);
715713 switch (builtin_ty->getKind()) {
716 case BuiltinType::Char_U:
717 case BuiltinType::UChar:
718 case BuiltinType::Char_S:
719 case BuiltinType::UShort:
720 case BuiltinType::UInt:
721 case BuiltinType::ULong:
722 case BuiltinType::ULongLong:
723 case BuiltinType::UInt128:
724 case BuiltinType::WChar_U:
714 case clang::BuiltinType::Char_U:
715 case clang::BuiltinType::UChar:
716 case clang::BuiltinType::Char_S:
717 case clang::BuiltinType::UShort:
718 case clang::BuiltinType::UInt:
719 case clang::BuiltinType::ULong:
720 case clang::BuiltinType::ULongLong:
721 case clang::BuiltinType::UInt128:
722 case clang::BuiltinType::WChar_U:
725723 return true;
726724 default:
727725 return false;
728726 }
729727}
730728
731static bool c_is_builtin_type(Context *c, QualType qt, BuiltinType::Kind kind) {
732 const Type *c_type = qual_type_canon(qt);
733 if (c_type->getTypeClass() != Type::Builtin)
729static bool c_is_builtin_type(Context *c, clang::QualType qt, clang::BuiltinType::Kind kind) {
730 const clang::Type *c_type = qual_type_canon(qt);
731 if (c_type->getTypeClass() != clang::Type::Builtin)
734732 return false;
735 const BuiltinType *builtin_ty = static_cast<const BuiltinType*>(c_type);
733 const clang::BuiltinType *builtin_ty = static_cast<const clang::BuiltinType*>(c_type);
736734 return builtin_ty->getKind() == kind;
737735}
738736
739static bool c_is_float(Context *c, QualType qt) {
740 const Type *c_type = qt.getTypePtr();
741 if (c_type->getTypeClass() != Type::Builtin)
737static bool c_is_float(Context *c, clang::QualType qt) {
738 const clang::Type *c_type = qt.getTypePtr();
739 if (c_type->getTypeClass() != clang::Type::Builtin)
742740 return false;
743 const BuiltinType *builtin_ty = static_cast<const BuiltinType*>(c_type);
741 const clang::BuiltinType *builtin_ty = static_cast<const clang::BuiltinType*>(c_type);
744742 switch (builtin_ty->getKind()) {
745 case BuiltinType::Half:
746 case BuiltinType::Float:
747 case BuiltinType::Double:
748 case BuiltinType::Float128:
749 case BuiltinType::LongDouble:
743 case clang::BuiltinType::Half:
744 case clang::BuiltinType::Float:
745 case clang::BuiltinType::Double:
746 case clang::BuiltinType::Float128:
747 case clang::BuiltinType::LongDouble:
750748 return true;
751749 default:
752750 return false;
753751 }
754752}
755753
756static bool qual_type_has_wrapping_overflow(Context *c, QualType qt) {
754static bool qual_type_has_wrapping_overflow(Context *c, clang::QualType qt) {
757755 if (c_is_signed_integer(c, qt) || c_is_float(c, qt)) {
758756 // float and signed integer overflow is undefined behavior.
759757 return false;
......@@ -763,23 +761,23 @@ static bool qual_type_has_wrapping_overflow(Context *c, QualType qt) {
763761 }
764762}
765763
766static bool type_is_opaque(Context *c, const Type *ty, const SourceLocation &source_loc) {
764static bool type_is_opaque(Context *c, const clang::Type *ty, const clang::SourceLocation &source_loc) {
767765 switch (ty->getTypeClass()) {
768 case Type::Builtin: {
769 const BuiltinType *builtin_ty = static_cast<const BuiltinType*>(ty);
770 return builtin_ty->getKind() == BuiltinType::Void;
766 case clang::Type::Builtin: {
767 const clang::BuiltinType *builtin_ty = static_cast<const clang::BuiltinType*>(ty);
768 return builtin_ty->getKind() == clang::BuiltinType::Void;
771769 }
772 case Type::Record: {
773 const RecordType *record_ty = static_cast<const RecordType*>(ty);
770 case clang::Type::Record: {
771 const clang::RecordType *record_ty = static_cast<const clang::RecordType*>(ty);
774772 return record_ty->getDecl()->getDefinition() == nullptr;
775773 }
776 case Type::Elaborated: {
777 const ElaboratedType *elaborated_ty = static_cast<const ElaboratedType*>(ty);
774 case clang::Type::Elaborated: {
775 const clang::ElaboratedType *elaborated_ty = static_cast<const clang::ElaboratedType*>(ty);
778776 return type_is_opaque(c, elaborated_ty->getNamedType().getTypePtr(), source_loc);
779777 }
780 case Type::Typedef: {
781 const TypedefType *typedef_ty = static_cast<const TypedefType*>(ty);
782 const TypedefNameDecl *typedef_decl = typedef_ty->getDecl();
778 case clang::Type::Typedef: {
779 const clang::TypedefType *typedef_ty = static_cast<const clang::TypedefType*>(ty);
780 const clang::TypedefNameDecl *typedef_decl = typedef_ty->getDecl();
783781 return type_is_opaque(c, typedef_decl->getUnderlyingType().getTypePtr(), source_loc);
784782 }
785783 default:
......@@ -787,145 +785,145 @@ static bool type_is_opaque(Context *c, const Type *ty, const SourceLocation &sou
787785 }
788786}
789787
790static AstNode *trans_type(Context *c, const Type *ty, const SourceLocation &source_loc) {
788static AstNode *trans_type(Context *c, const clang::Type *ty, const clang::SourceLocation &source_loc) {
791789 switch (ty->getTypeClass()) {
792 case Type::Builtin:
790 case clang::Type::Builtin:
793791 {
794 const BuiltinType *builtin_ty = static_cast<const BuiltinType*>(ty);
792 const clang::BuiltinType *builtin_ty = static_cast<const clang::BuiltinType*>(ty);
795793 switch (builtin_ty->getKind()) {
796 case BuiltinType::Void:
794 case clang::BuiltinType::Void:
797795 return trans_create_node_symbol_str(c, "c_void");
798 case BuiltinType::Bool:
796 case clang::BuiltinType::Bool:
799797 return trans_create_node_symbol_str(c, "bool");
800 case BuiltinType::Char_U:
801 case BuiltinType::UChar:
802 case BuiltinType::Char_S:
803 case BuiltinType::Char8:
798 case clang::BuiltinType::Char_U:
799 case clang::BuiltinType::UChar:
800 case clang::BuiltinType::Char_S:
801 case clang::BuiltinType::Char8:
804802 return trans_create_node_symbol_str(c, "u8");
805 case BuiltinType::SChar:
803 case clang::BuiltinType::SChar:
806804 return trans_create_node_symbol_str(c, "i8");
807 case BuiltinType::UShort:
805 case clang::BuiltinType::UShort:
808806 return trans_create_node_symbol_str(c, "c_ushort");
809 case BuiltinType::UInt:
807 case clang::BuiltinType::UInt:
810808 return trans_create_node_symbol_str(c, "c_uint");
811 case BuiltinType::ULong:
809 case clang::BuiltinType::ULong:
812810 return trans_create_node_symbol_str(c, "c_ulong");
813 case BuiltinType::ULongLong:
811 case clang::BuiltinType::ULongLong:
814812 return trans_create_node_symbol_str(c, "c_ulonglong");
815 case BuiltinType::Short:
813 case clang::BuiltinType::Short:
816814 return trans_create_node_symbol_str(c, "c_short");
817 case BuiltinType::Int:
815 case clang::BuiltinType::Int:
818816 return trans_create_node_symbol_str(c, "c_int");
819 case BuiltinType::Long:
817 case clang::BuiltinType::Long:
820818 return trans_create_node_symbol_str(c, "c_long");
821 case BuiltinType::LongLong:
819 case clang::BuiltinType::LongLong:
822820 return trans_create_node_symbol_str(c, "c_longlong");
823 case BuiltinType::UInt128:
821 case clang::BuiltinType::UInt128:
824822 return trans_create_node_symbol_str(c, "u128");
825 case BuiltinType::Int128:
823 case clang::BuiltinType::Int128:
826824 return trans_create_node_symbol_str(c, "i128");
827 case BuiltinType::Float:
825 case clang::BuiltinType::Float:
828826 return trans_create_node_symbol_str(c, "f32");
829 case BuiltinType::Double:
827 case clang::BuiltinType::Double:
830828 return trans_create_node_symbol_str(c, "f64");
831 case BuiltinType::Float128:
829 case clang::BuiltinType::Float128:
832830 return trans_create_node_symbol_str(c, "f128");
833 case BuiltinType::Float16:
831 case clang::BuiltinType::Float16:
834832 return trans_create_node_symbol_str(c, "f16");
835 case BuiltinType::LongDouble:
833 case clang::BuiltinType::LongDouble:
836834 return trans_create_node_symbol_str(c, "c_longdouble");
837 case BuiltinType::WChar_U:
838 case BuiltinType::Char16:
839 case BuiltinType::Char32:
840 case BuiltinType::WChar_S:
841 case BuiltinType::Half:
842 case BuiltinType::NullPtr:
843 case BuiltinType::ObjCId:
844 case BuiltinType::ObjCClass:
845 case BuiltinType::ObjCSel:
846 case BuiltinType::OMPArraySection:
847 case BuiltinType::Dependent:
848 case BuiltinType::Overload:
849 case BuiltinType::BoundMember:
850 case BuiltinType::PseudoObject:
851 case BuiltinType::UnknownAny:
852 case BuiltinType::BuiltinFn:
853 case BuiltinType::ARCUnbridgedCast:
854 case BuiltinType::ShortAccum:
855 case BuiltinType::Accum:
856 case BuiltinType::LongAccum:
857 case BuiltinType::UShortAccum:
858 case BuiltinType::UAccum:
859 case BuiltinType::ULongAccum:
860
861 case BuiltinType::OCLImage1dRO:
862 case BuiltinType::OCLImage1dArrayRO:
863 case BuiltinType::OCLImage1dBufferRO:
864 case BuiltinType::OCLImage2dRO:
865 case BuiltinType::OCLImage2dArrayRO:
866 case BuiltinType::OCLImage2dDepthRO:
867 case BuiltinType::OCLImage2dArrayDepthRO:
868 case BuiltinType::OCLImage2dMSAARO:
869 case BuiltinType::OCLImage2dArrayMSAARO:
870 case BuiltinType::OCLImage2dMSAADepthRO:
871 case BuiltinType::OCLImage2dArrayMSAADepthRO:
872 case BuiltinType::OCLImage3dRO:
873 case BuiltinType::OCLImage1dWO:
874 case BuiltinType::OCLImage1dArrayWO:
875 case BuiltinType::OCLImage1dBufferWO:
876 case BuiltinType::OCLImage2dWO:
877 case BuiltinType::OCLImage2dArrayWO:
878 case BuiltinType::OCLImage2dDepthWO:
879 case BuiltinType::OCLImage2dArrayDepthWO:
880 case BuiltinType::OCLImage2dMSAAWO:
881 case BuiltinType::OCLImage2dArrayMSAAWO:
882 case BuiltinType::OCLImage2dMSAADepthWO:
883 case BuiltinType::OCLImage2dArrayMSAADepthWO:
884 case BuiltinType::OCLImage3dWO:
885 case BuiltinType::OCLImage1dRW:
886 case BuiltinType::OCLImage1dArrayRW:
887 case BuiltinType::OCLImage1dBufferRW:
888 case BuiltinType::OCLImage2dRW:
889 case BuiltinType::OCLImage2dArrayRW:
890 case BuiltinType::OCLImage2dDepthRW:
891 case BuiltinType::OCLImage2dArrayDepthRW:
892 case BuiltinType::OCLImage2dMSAARW:
893 case BuiltinType::OCLImage2dArrayMSAARW:
894 case BuiltinType::OCLImage2dMSAADepthRW:
895 case BuiltinType::OCLImage2dArrayMSAADepthRW:
896 case BuiltinType::OCLImage3dRW:
897 case BuiltinType::OCLSampler:
898 case BuiltinType::OCLEvent:
899 case BuiltinType::OCLClkEvent:
900 case BuiltinType::OCLQueue:
901 case BuiltinType::OCLReserveID:
902 case BuiltinType::ShortFract:
903 case BuiltinType::Fract:
904 case BuiltinType::LongFract:
905 case BuiltinType::UShortFract:
906 case BuiltinType::UFract:
907 case BuiltinType::ULongFract:
908 case BuiltinType::SatShortAccum:
909 case BuiltinType::SatAccum:
910 case BuiltinType::SatLongAccum:
911 case BuiltinType::SatUShortAccum:
912 case BuiltinType::SatUAccum:
913 case BuiltinType::SatULongAccum:
914 case BuiltinType::SatShortFract:
915 case BuiltinType::SatFract:
916 case BuiltinType::SatLongFract:
917 case BuiltinType::SatUShortFract:
918 case BuiltinType::SatUFract:
919 case BuiltinType::SatULongFract:
835 case clang::BuiltinType::WChar_U:
836 case clang::BuiltinType::Char16:
837 case clang::BuiltinType::Char32:
838 case clang::BuiltinType::WChar_S:
839 case clang::BuiltinType::Half:
840 case clang::BuiltinType::NullPtr:
841 case clang::BuiltinType::ObjCId:
842 case clang::BuiltinType::ObjCClass:
843 case clang::BuiltinType::ObjCSel:
844 case clang::BuiltinType::OMPArraySection:
845 case clang::BuiltinType::Dependent:
846 case clang::BuiltinType::Overload:
847 case clang::BuiltinType::BoundMember:
848 case clang::BuiltinType::PseudoObject:
849 case clang::BuiltinType::UnknownAny:
850 case clang::BuiltinType::BuiltinFn:
851 case clang::BuiltinType::ARCUnbridgedCast:
852 case clang::BuiltinType::ShortAccum:
853 case clang::BuiltinType::Accum:
854 case clang::BuiltinType::LongAccum:
855 case clang::BuiltinType::UShortAccum:
856 case clang::BuiltinType::UAccum:
857 case clang::BuiltinType::ULongAccum:
858
859 case clang::BuiltinType::OCLImage1dRO:
860 case clang::BuiltinType::OCLImage1dArrayRO:
861 case clang::BuiltinType::OCLImage1dBufferRO:
862 case clang::BuiltinType::OCLImage2dRO:
863 case clang::BuiltinType::OCLImage2dArrayRO:
864 case clang::BuiltinType::OCLImage2dDepthRO:
865 case clang::BuiltinType::OCLImage2dArrayDepthRO:
866 case clang::BuiltinType::OCLImage2dMSAARO:
867 case clang::BuiltinType::OCLImage2dArrayMSAARO:
868 case clang::BuiltinType::OCLImage2dMSAADepthRO:
869 case clang::BuiltinType::OCLImage2dArrayMSAADepthRO:
870 case clang::BuiltinType::OCLImage3dRO:
871 case clang::BuiltinType::OCLImage1dWO:
872 case clang::BuiltinType::OCLImage1dArrayWO:
873 case clang::BuiltinType::OCLImage1dBufferWO:
874 case clang::BuiltinType::OCLImage2dWO:
875 case clang::BuiltinType::OCLImage2dArrayWO:
876 case clang::BuiltinType::OCLImage2dDepthWO:
877 case clang::BuiltinType::OCLImage2dArrayDepthWO:
878 case clang::BuiltinType::OCLImage2dMSAAWO:
879 case clang::BuiltinType::OCLImage2dArrayMSAAWO:
880 case clang::BuiltinType::OCLImage2dMSAADepthWO:
881 case clang::BuiltinType::OCLImage2dArrayMSAADepthWO:
882 case clang::BuiltinType::OCLImage3dWO:
883 case clang::BuiltinType::OCLImage1dRW:
884 case clang::BuiltinType::OCLImage1dArrayRW:
885 case clang::BuiltinType::OCLImage1dBufferRW:
886 case clang::BuiltinType::OCLImage2dRW:
887 case clang::BuiltinType::OCLImage2dArrayRW:
888 case clang::BuiltinType::OCLImage2dDepthRW:
889 case clang::BuiltinType::OCLImage2dArrayDepthRW:
890 case clang::BuiltinType::OCLImage2dMSAARW:
891 case clang::BuiltinType::OCLImage2dArrayMSAARW:
892 case clang::BuiltinType::OCLImage2dMSAADepthRW:
893 case clang::BuiltinType::OCLImage2dArrayMSAADepthRW:
894 case clang::BuiltinType::OCLImage3dRW:
895 case clang::BuiltinType::OCLSampler:
896 case clang::BuiltinType::OCLEvent:
897 case clang::BuiltinType::OCLClkEvent:
898 case clang::BuiltinType::OCLQueue:
899 case clang::BuiltinType::OCLReserveID:
900 case clang::BuiltinType::ShortFract:
901 case clang::BuiltinType::Fract:
902 case clang::BuiltinType::LongFract:
903 case clang::BuiltinType::UShortFract:
904 case clang::BuiltinType::UFract:
905 case clang::BuiltinType::ULongFract:
906 case clang::BuiltinType::SatShortAccum:
907 case clang::BuiltinType::SatAccum:
908 case clang::BuiltinType::SatLongAccum:
909 case clang::BuiltinType::SatUShortAccum:
910 case clang::BuiltinType::SatUAccum:
911 case clang::BuiltinType::SatULongAccum:
912 case clang::BuiltinType::SatShortFract:
913 case clang::BuiltinType::SatFract:
914 case clang::BuiltinType::SatLongFract:
915 case clang::BuiltinType::SatUShortFract:
916 case clang::BuiltinType::SatUFract:
917 case clang::BuiltinType::SatULongFract:
920918 emit_warning(c, source_loc, "unsupported builtin type");
921919 return nullptr;
922920 }
923921 break;
924922 }
925 case Type::Pointer:
923 case clang::Type::Pointer:
926924 {
927 const PointerType *pointer_ty = static_cast<const PointerType*>(ty);
928 QualType child_qt = pointer_ty->getPointeeType();
925 const clang::PointerType *pointer_ty = static_cast<const clang::PointerType*>(ty);
926 clang::QualType child_qt = pointer_ty->getPointeeType();
929927 AstNode *child_node = trans_qual_type(c, child_qt, source_loc);
930928 if (child_node == nullptr) {
931929 emit_warning(c, source_loc, "pointer to unsupported type");
......@@ -945,84 +943,84 @@ static AstNode *trans_type(Context *c, const Type *ty, const SourceLocation &sou
945943 child_qt.isVolatileQualified(), child_node, PtrLenC);
946944 }
947945 }
948 case Type::Typedef:
946 case clang::Type::Typedef:
949947 {
950 const TypedefType *typedef_ty = static_cast<const TypedefType*>(ty);
951 const TypedefNameDecl *typedef_decl = typedef_ty->getDecl();
948 const clang::TypedefType *typedef_ty = static_cast<const clang::TypedefType*>(ty);
949 const clang::TypedefNameDecl *typedef_decl = typedef_ty->getDecl();
952950 return resolve_typedef_decl(c, typedef_decl);
953951 }
954 case Type::Elaborated:
952 case clang::Type::Elaborated:
955953 {
956 const ElaboratedType *elaborated_ty = static_cast<const ElaboratedType*>(ty);
954 const clang::ElaboratedType *elaborated_ty = static_cast<const clang::ElaboratedType*>(ty);
957955 switch (elaborated_ty->getKeyword()) {
958 case ETK_Struct:
959 case ETK_Enum:
960 case ETK_Union:
956 case clang::ETK_Struct:
957 case clang::ETK_Enum:
958 case clang::ETK_Union:
961959 return trans_qual_type(c, elaborated_ty->getNamedType(), source_loc);
962 case ETK_Interface:
963 case ETK_Class:
964 case ETK_Typename:
965 case ETK_None:
960 case clang::ETK_Interface:
961 case clang::ETK_Class:
962 case clang::ETK_Typename:
963 case clang::ETK_None:
966964 emit_warning(c, source_loc, "unsupported elaborated type");
967965 return nullptr;
968966 }
969967 }
970 case Type::FunctionProto:
968 case clang::Type::FunctionProto:
971969 {
972 const FunctionProtoType *fn_proto_ty = static_cast<const FunctionProtoType*>(ty);
970 const clang::FunctionProtoType *fn_proto_ty = static_cast<const clang::FunctionProtoType*>(ty);
973971
974972 AstNode *proto_node = trans_create_node(c, NodeTypeFnProto);
975973 switch (fn_proto_ty->getCallConv()) {
976 case CC_C: // __attribute__((cdecl))
974 case clang::CC_C: // __attribute__((cdecl))
977975 proto_node->data.fn_proto.cc = CallingConventionC;
978976 proto_node->data.fn_proto.is_extern = true;
979977 break;
980 case CC_X86StdCall: // __attribute__((stdcall))
978 case clang::CC_X86StdCall: // __attribute__((stdcall))
981979 proto_node->data.fn_proto.cc = CallingConventionStdcall;
982980 break;
983 case CC_X86FastCall: // __attribute__((fastcall))
981 case clang::CC_X86FastCall: // __attribute__((fastcall))
984982 emit_warning(c, source_loc, "unsupported calling convention: x86 fastcall");
985983 return nullptr;
986 case CC_X86ThisCall: // __attribute__((thiscall))
984 case clang::CC_X86ThisCall: // __attribute__((thiscall))
987985 emit_warning(c, source_loc, "unsupported calling convention: x86 thiscall");
988986 return nullptr;
989 case CC_X86VectorCall: // __attribute__((vectorcall))
987 case clang::CC_X86VectorCall: // __attribute__((vectorcall))
990988 emit_warning(c, source_loc, "unsupported calling convention: x86 vectorcall");
991989 return nullptr;
992 case CC_X86Pascal: // __attribute__((pascal))
990 case clang::CC_X86Pascal: // __attribute__((pascal))
993991 emit_warning(c, source_loc, "unsupported calling convention: x86 pascal");
994992 return nullptr;
995 case CC_Win64: // __attribute__((ms_abi))
993 case clang::CC_Win64: // __attribute__((ms_abi))
996994 emit_warning(c, source_loc, "unsupported calling convention: win64");
997995 return nullptr;
998 case CC_X86_64SysV: // __attribute__((sysv_abi))
996 case clang::CC_X86_64SysV: // __attribute__((sysv_abi))
999997 emit_warning(c, source_loc, "unsupported calling convention: x86 64sysv");
1000998 return nullptr;
1001 case CC_X86RegCall:
999 case clang::CC_X86RegCall:
10021000 emit_warning(c, source_loc, "unsupported calling convention: x86 reg");
10031001 return nullptr;
1004 case CC_AAPCS: // __attribute__((pcs("aapcs")))
1002 case clang::CC_AAPCS: // __attribute__((pcs("aapcs")))
10051003 emit_warning(c, source_loc, "unsupported calling convention: aapcs");
10061004 return nullptr;
1007 case CC_AAPCS_VFP: // __attribute__((pcs("aapcs-vfp")))
1005 case clang::CC_AAPCS_VFP: // __attribute__((pcs("aapcs-vfp")))
10081006 emit_warning(c, source_loc, "unsupported calling convention: aapcs-vfp");
10091007 return nullptr;
1010 case CC_IntelOclBicc: // __attribute__((intel_ocl_bicc))
1008 case clang::CC_IntelOclBicc: // __attribute__((intel_ocl_bicc))
10111009 emit_warning(c, source_loc, "unsupported calling convention: intel_ocl_bicc");
10121010 return nullptr;
1013 case CC_SpirFunction: // default for OpenCL functions on SPIR target
1011 case clang::CC_SpirFunction: // default for OpenCL functions on SPIR target
10141012 emit_warning(c, source_loc, "unsupported calling convention: SPIR function");
10151013 return nullptr;
1016 case CC_OpenCLKernel:
1014 case clang::CC_OpenCLKernel:
10171015 emit_warning(c, source_loc, "unsupported calling convention: OpenCLKernel");
10181016 return nullptr;
1019 case CC_Swift:
1017 case clang::CC_Swift:
10201018 emit_warning(c, source_loc, "unsupported calling convention: Swift");
10211019 return nullptr;
1022 case CC_PreserveMost:
1020 case clang::CC_PreserveMost:
10231021 emit_warning(c, source_loc, "unsupported calling convention: PreserveMost");
10241022 return nullptr;
1025 case CC_PreserveAll:
1023 case clang::CC_PreserveAll:
10261024 emit_warning(c, source_loc, "unsupported calling convention: PreserveAll");
10271025 return nullptr;
10281026 }
......@@ -1040,7 +1038,7 @@ static AstNode *trans_type(Context *c, const Type *ty, const SourceLocation &sou
10401038 return nullptr;
10411039 }
10421040 // convert c_void to actual void (only for return type)
1043 // we do want to look at the AstNode instead of QualType, because
1041 // we do want to look at the AstNode instead of clang::QualType, because
10441042 // if they do something like:
10451043 // typedef Foo void;
10461044 // void foo(void) -> Foo;
......@@ -1057,7 +1055,7 @@ static AstNode *trans_type(Context *c, const Type *ty, const SourceLocation &sou
10571055 }
10581056
10591057 for (size_t i = 0; i < param_count; i += 1) {
1060 QualType qt = fn_proto_ty->getParamType(i);
1058 clang::QualType qt = fn_proto_ty->getParamType(i);
10611059 AstNode *param_type_node = trans_qual_type(c, qt, source_loc);
10621060
10631061 if (param_type_node == nullptr) {
......@@ -1080,19 +1078,19 @@ static AstNode *trans_type(Context *c, const Type *ty, const SourceLocation &sou
10801078
10811079 return proto_node;
10821080 }
1083 case Type::Record:
1081 case clang::Type::Record:
10841082 {
1085 const RecordType *record_ty = static_cast<const RecordType*>(ty);
1083 const clang::RecordType *record_ty = static_cast<const clang::RecordType*>(ty);
10861084 return resolve_record_decl(c, record_ty->getDecl());
10871085 }
1088 case Type::Enum:
1086 case clang::Type::Enum:
10891087 {
1090 const EnumType *enum_ty = static_cast<const EnumType*>(ty);
1088 const clang::EnumType *enum_ty = static_cast<const clang::EnumType*>(ty);
10911089 return resolve_enum_decl(c, enum_ty->getDecl());
10921090 }
1093 case Type::ConstantArray:
1091 case clang::Type::ConstantArray:
10941092 {
1095 const ConstantArrayType *const_arr_ty = static_cast<const ConstantArrayType *>(ty);
1093 const clang::ConstantArrayType *const_arr_ty = static_cast<const clang::ConstantArrayType *>(ty);
10961094 AstNode *child_type_node = trans_qual_type(c, const_arr_ty->getElementType(), source_loc);
10971095 if (child_type_node == nullptr) {
10981096 emit_warning(c, source_loc, "unresolved array element type");
......@@ -1102,25 +1100,25 @@ static AstNode *trans_type(Context *c, const Type *ty, const SourceLocation &sou
11021100 AstNode *size_node = trans_create_node_unsigned(c, size);
11031101 return trans_create_node_array_type(c, size_node, child_type_node);
11041102 }
1105 case Type::Paren:
1103 case clang::Type::Paren:
11061104 {
1107 const ParenType *paren_ty = static_cast<const ParenType *>(ty);
1105 const clang::ParenType *paren_ty = static_cast<const clang::ParenType *>(ty);
11081106 return trans_qual_type(c, paren_ty->getInnerType(), source_loc);
11091107 }
1110 case Type::Decayed:
1108 case clang::Type::Decayed:
11111109 {
1112 const DecayedType *decayed_ty = static_cast<const DecayedType *>(ty);
1110 const clang::DecayedType *decayed_ty = static_cast<const clang::DecayedType *>(ty);
11131111 return trans_qual_type(c, decayed_ty->getDecayedType(), source_loc);
11141112 }
1115 case Type::Attributed:
1113 case clang::Type::Attributed:
11161114 {
1117 const AttributedType *attributed_ty = static_cast<const AttributedType *>(ty);
1115 const clang::AttributedType *attributed_ty = static_cast<const clang::AttributedType *>(ty);
11181116 return trans_qual_type(c, attributed_ty->getEquivalentType(), source_loc);
11191117 }
1120 case Type::IncompleteArray:
1118 case clang::Type::IncompleteArray:
11211119 {
1122 const IncompleteArrayType *incomplete_array_ty = static_cast<const IncompleteArrayType *>(ty);
1123 QualType child_qt = incomplete_array_ty->getElementType();
1120 const clang::IncompleteArrayType *incomplete_array_ty = static_cast<const clang::IncompleteArrayType *>(ty);
1121 clang::QualType child_qt = incomplete_array_ty->getElementType();
11241122 AstNode *child_type_node = trans_qual_type(c, child_qt, source_loc);
11251123 if (child_type_node == nullptr) {
11261124 emit_warning(c, source_loc, "unresolved array element type");
......@@ -1130,56 +1128,56 @@ static AstNode *trans_type(Context *c, const Type *ty, const SourceLocation &sou
11301128 child_qt.isVolatileQualified(), child_type_node, PtrLenC);
11311129 return pointer_node;
11321130 }
1133 case Type::BlockPointer:
1134 case Type::LValueReference:
1135 case Type::RValueReference:
1136 case Type::MemberPointer:
1137 case Type::VariableArray:
1138 case Type::DependentSizedArray:
1139 case Type::DependentSizedExtVector:
1140 case Type::Vector:
1141 case Type::ExtVector:
1142 case Type::FunctionNoProto:
1143 case Type::UnresolvedUsing:
1144 case Type::Adjusted:
1145 case Type::TypeOfExpr:
1146 case Type::TypeOf:
1147 case Type::Decltype:
1148 case Type::UnaryTransform:
1149 case Type::TemplateTypeParm:
1150 case Type::SubstTemplateTypeParm:
1151 case Type::SubstTemplateTypeParmPack:
1152 case Type::TemplateSpecialization:
1153 case Type::Auto:
1154 case Type::InjectedClassName:
1155 case Type::DependentName:
1156 case Type::DependentTemplateSpecialization:
1157 case Type::PackExpansion:
1158 case Type::ObjCObject:
1159 case Type::ObjCInterface:
1160 case Type::Complex:
1161 case Type::ObjCObjectPointer:
1162 case Type::Atomic:
1163 case Type::Pipe:
1164 case Type::ObjCTypeParam:
1165 case Type::DeducedTemplateSpecialization:
1166 case Type::DependentAddressSpace:
1167 case Type::DependentVector:
1131 case clang::Type::BlockPointer:
1132 case clang::Type::LValueReference:
1133 case clang::Type::RValueReference:
1134 case clang::Type::MemberPointer:
1135 case clang::Type::VariableArray:
1136 case clang::Type::DependentSizedArray:
1137 case clang::Type::DependentSizedExtVector:
1138 case clang::Type::Vector:
1139 case clang::Type::ExtVector:
1140 case clang::Type::FunctionNoProto:
1141 case clang::Type::UnresolvedUsing:
1142 case clang::Type::Adjusted:
1143 case clang::Type::TypeOfExpr:
1144 case clang::Type::TypeOf:
1145 case clang::Type::Decltype:
1146 case clang::Type::UnaryTransform:
1147 case clang::Type::TemplateTypeParm:
1148 case clang::Type::SubstTemplateTypeParm:
1149 case clang::Type::SubstTemplateTypeParmPack:
1150 case clang::Type::TemplateSpecialization:
1151 case clang::Type::Auto:
1152 case clang::Type::InjectedClassName:
1153 case clang::Type::DependentName:
1154 case clang::Type::DependentTemplateSpecialization:
1155 case clang::Type::PackExpansion:
1156 case clang::Type::ObjCObject:
1157 case clang::Type::ObjCInterface:
1158 case clang::Type::Complex:
1159 case clang::Type::ObjCObjectPointer:
1160 case clang::Type::Atomic:
1161 case clang::Type::Pipe:
1162 case clang::Type::ObjCTypeParam:
1163 case clang::Type::DeducedTemplateSpecialization:
1164 case clang::Type::DependentAddressSpace:
1165 case clang::Type::DependentVector:
11681166 emit_warning(c, source_loc, "unsupported type: '%s'", ty->getTypeClassName());
11691167 return nullptr;
11701168 }
11711169 zig_unreachable();
11721170}
11731171
1174static AstNode *trans_qual_type(Context *c, QualType qt, const SourceLocation &source_loc) {
1172static AstNode *trans_qual_type(Context *c, clang::QualType qt, const clang::SourceLocation &source_loc) {
11751173 return trans_type(c, qt.getTypePtr(), source_loc);
11761174}
11771175
1178static int trans_compound_stmt_inline(Context *c, TransScope *scope, const CompoundStmt *stmt,
1176static int trans_compound_stmt_inline(Context *c, TransScope *scope, const clang::CompoundStmt *stmt,
11791177 AstNode *block_node, TransScope **out_node_scope)
11801178{
11811179 assert(block_node->type == NodeTypeBlock);
1182 for (CompoundStmt::const_body_iterator it = stmt->body_begin(), end_it = stmt->body_end(); it != end_it; ++it) {
1180 for (clang::CompoundStmt::const_body_iterator it = stmt->body_begin(), end_it = stmt->body_end(); it != end_it; ++it) {
11831181 AstNode *child_node;
11841182 scope = trans_stmt(c, scope, *it, &child_node);
11851183 if (scope == nullptr)
......@@ -1193,7 +1191,7 @@ static int trans_compound_stmt_inline(Context *c, TransScope *scope, const Compo
11931191 return ErrorNone;
11941192}
11951193
1196static AstNode *trans_compound_stmt(Context *c, TransScope *scope, const CompoundStmt *stmt,
1194static AstNode *trans_compound_stmt(Context *c, TransScope *scope, const clang::CompoundStmt *stmt,
11971195 TransScope **out_node_scope)
11981196{
11991197 TransScopeBlock *child_scope_block = trans_scope_block_create(c, scope);
......@@ -1202,8 +1200,8 @@ static AstNode *trans_compound_stmt(Context *c, TransScope *scope, const Compoun
12021200 return child_scope_block->node;
12031201}
12041202
1205static AstNode *trans_return_stmt(Context *c, TransScope *scope, const ReturnStmt *stmt) {
1206 const Expr *value_expr = stmt->getRetValue();
1203static AstNode *trans_return_stmt(Context *c, TransScope *scope, const clang::ReturnStmt *stmt) {
1204 const clang::Expr *value_expr = stmt->getRetValue();
12071205 if (value_expr == nullptr) {
12081206 return trans_create_node(c, NodeTypeReturnExpr);
12091207 } else {
......@@ -1215,7 +1213,7 @@ static AstNode *trans_return_stmt(Context *c, TransScope *scope, const ReturnStm
12151213 }
12161214}
12171215
1218static AstNode *trans_integer_literal(Context *c, const IntegerLiteral *stmt) {
1216static AstNode *trans_integer_literal(Context *c, const clang::IntegerLiteral *stmt) {
12191217 llvm::APSInt result;
12201218 if (!stmt->EvaluateAsInt(result, *c->ctx)) {
12211219 emit_warning(c, stmt->getLocStart(), "invalid integer literal");
......@@ -1225,13 +1223,13 @@ static AstNode *trans_integer_literal(Context *c, const IntegerLiteral *stmt) {
12251223}
12261224
12271225static AstNode *trans_conditional_operator(Context *c, ResultUsed result_used, TransScope *scope,
1228 const ConditionalOperator *stmt)
1226 const clang::ConditionalOperator *stmt)
12291227{
12301228 AstNode *node = trans_create_node(c, NodeTypeIfBoolExpr);
12311229
1232 Expr *cond_expr = stmt->getCond();
1233 Expr *true_expr = stmt->getTrueExpr();
1234 Expr *false_expr = stmt->getFalseExpr();
1230 clang::Expr *cond_expr = stmt->getCond();
1231 clang::Expr *true_expr = stmt->getTrueExpr();
1232 clang::Expr *false_expr = stmt->getFalseExpr();
12351233
12361234 node->data.if_bool_expr.condition = trans_expr(c, ResultUsedYes, scope, cond_expr, TransRValue);
12371235 if (node->data.if_bool_expr.condition == nullptr)
......@@ -1248,7 +1246,7 @@ static AstNode *trans_conditional_operator(Context *c, ResultUsed result_used, T
12481246 return maybe_suppress_result(c, result_used, node);
12491247}
12501248
1251static AstNode *trans_create_bin_op(Context *c, TransScope *scope, Expr *lhs, BinOpType bin_op, Expr *rhs) {
1249static AstNode *trans_create_bin_op(Context *c, TransScope *scope, clang::Expr *lhs, BinOpType bin_op, clang::Expr *rhs) {
12521250 AstNode *node = trans_create_node(c, NodeTypeBinOpExpr);
12531251 node->data.bin_op_expr.bin_op = bin_op;
12541252
......@@ -1263,7 +1261,7 @@ static AstNode *trans_create_bin_op(Context *c, TransScope *scope, Expr *lhs, Bi
12631261 return node;
12641262}
12651263
1266static AstNode *trans_create_bool_bin_op(Context *c, TransScope *scope, Expr *lhs, BinOpType bin_op, Expr *rhs) {
1264static AstNode *trans_create_bool_bin_op(Context *c, TransScope *scope, clang::Expr *lhs, BinOpType bin_op, clang::Expr *rhs) {
12671265 assert(bin_op == BinOpTypeBoolAnd || bin_op == BinOpTypeBoolOr);
12681266 AstNode *node = trans_create_node(c, NodeTypeBinOpExpr);
12691267 node->data.bin_op_expr.bin_op = bin_op;
......@@ -1279,7 +1277,7 @@ static AstNode *trans_create_bool_bin_op(Context *c, TransScope *scope, Expr *lh
12791277 return node;
12801278}
12811279
1282static AstNode *trans_create_assign(Context *c, ResultUsed result_used, TransScope *scope, Expr *lhs, Expr *rhs) {
1280static AstNode *trans_create_assign(Context *c, ResultUsed result_used, TransScope *scope, clang::Expr *lhs, clang::Expr *rhs) {
12831281 if (result_used == ResultUsedNo) {
12841282 // common case
12851283 AstNode *node = trans_create_node(c, NodeTypeBinOpExpr);
......@@ -1330,10 +1328,10 @@ static AstNode *trans_create_assign(Context *c, ResultUsed result_used, TransSco
13301328 }
13311329}
13321330
1333static AstNode *trans_create_shift_op(Context *c, TransScope *scope, QualType result_type,
1334 Expr *lhs_expr, BinOpType bin_op, Expr *rhs_expr)
1331static AstNode *trans_create_shift_op(Context *c, TransScope *scope, clang::QualType result_type,
1332 clang::Expr *lhs_expr, BinOpType bin_op, clang::Expr *rhs_expr)
13351333{
1336 const SourceLocation &rhs_location = rhs_expr->getLocStart();
1334 const clang::SourceLocation &rhs_location = rhs_expr->getLocStart();
13371335 AstNode *rhs_type = qual_type_to_log2_int_ref(c, result_type, rhs_location);
13381336 // lhs >> u5(rh)
13391337
......@@ -1347,22 +1345,22 @@ static AstNode *trans_create_shift_op(Context *c, TransScope *scope, QualType re
13471345 return trans_create_node_bin_op(c, lhs, bin_op, coerced_rhs);
13481346}
13491347
1350static AstNode *trans_binary_operator(Context *c, ResultUsed result_used, TransScope *scope, const BinaryOperator *stmt) {
1348static AstNode *trans_binary_operator(Context *c, ResultUsed result_used, TransScope *scope, const clang::BinaryOperator *stmt) {
13511349 switch (stmt->getOpcode()) {
1352 case BO_PtrMemD:
1353 emit_warning(c, stmt->getLocStart(), "TODO handle more C binary operators: BO_PtrMemD");
1350 case clang::BO_PtrMemD:
1351 emit_warning(c, stmt->getLocStart(), "TODO handle more C binary operators: clang::BO_PtrMemD");
13541352 return nullptr;
1355 case BO_PtrMemI:
1356 emit_warning(c, stmt->getLocStart(), "TODO handle more C binary operators: BO_PtrMemI");
1353 case clang::BO_PtrMemI:
1354 emit_warning(c, stmt->getLocStart(), "TODO handle more C binary operators: clang::BO_PtrMemI");
13571355 return nullptr;
1358 case BO_Cmp:
1359 emit_warning(c, stmt->getLocStart(), "TODO handle more C binary operators: BO_Cmp");
1356 case clang::BO_Cmp:
1357 emit_warning(c, stmt->getLocStart(), "TODO handle more C binary operators: clang::BO_Cmp");
13601358 return nullptr;
1361 case BO_Mul:
1359 case clang::BO_Mul:
13621360 return trans_create_bin_op(c, scope, stmt->getLHS(),
13631361 qual_type_has_wrapping_overflow(c, stmt->getType()) ? BinOpTypeMultWrap : BinOpTypeMult,
13641362 stmt->getRHS());
1365 case BO_Div:
1363 case clang::BO_Div:
13661364 if (qual_type_has_wrapping_overflow(c, stmt->getType())) {
13671365 // unsigned/float division uses the operator
13681366 return trans_create_bin_op(c, scope, stmt->getLHS(), BinOpTypeDiv, stmt->getRHS());
......@@ -1377,7 +1375,7 @@ static AstNode *trans_binary_operator(Context *c, ResultUsed result_used, TransS
13771375 fn_call->data.fn_call_expr.params.append(rhs);
13781376 return fn_call;
13791377 }
1380 case BO_Rem:
1378 case clang::BO_Rem:
13811379 if (qual_type_has_wrapping_overflow(c, stmt->getType())) {
13821380 // unsigned/float division uses the operator
13831381 return trans_create_bin_op(c, scope, stmt->getLHS(), BinOpTypeMod, stmt->getRHS());
......@@ -1392,43 +1390,43 @@ static AstNode *trans_binary_operator(Context *c, ResultUsed result_used, TransS
13921390 fn_call->data.fn_call_expr.params.append(rhs);
13931391 return fn_call;
13941392 }
1395 case BO_Add:
1393 case clang::BO_Add:
13961394 return trans_create_bin_op(c, scope, stmt->getLHS(),
13971395 qual_type_has_wrapping_overflow(c, stmt->getType()) ? BinOpTypeAddWrap : BinOpTypeAdd,
13981396 stmt->getRHS());
1399 case BO_Sub:
1397 case clang::BO_Sub:
14001398 return trans_create_bin_op(c, scope, stmt->getLHS(),
14011399 qual_type_has_wrapping_overflow(c, stmt->getType()) ? BinOpTypeSubWrap : BinOpTypeSub,
14021400 stmt->getRHS());
1403 case BO_Shl:
1401 case clang::BO_Shl:
14041402 return trans_create_shift_op(c, scope, stmt->getType(), stmt->getLHS(), BinOpTypeBitShiftLeft, stmt->getRHS());
1405 case BO_Shr:
1403 case clang::BO_Shr:
14061404 return trans_create_shift_op(c, scope, stmt->getType(), stmt->getLHS(), BinOpTypeBitShiftRight, stmt->getRHS());
1407 case BO_LT:
1405 case clang::BO_LT:
14081406 return trans_create_bin_op(c, scope, stmt->getLHS(), BinOpTypeCmpLessThan, stmt->getRHS());
1409 case BO_GT:
1407 case clang::BO_GT:
14101408 return trans_create_bin_op(c, scope, stmt->getLHS(), BinOpTypeCmpGreaterThan, stmt->getRHS());
1411 case BO_LE:
1409 case clang::BO_LE:
14121410 return trans_create_bin_op(c, scope, stmt->getLHS(), BinOpTypeCmpLessOrEq, stmt->getRHS());
1413 case BO_GE:
1411 case clang::BO_GE:
14141412 return trans_create_bin_op(c, scope, stmt->getLHS(), BinOpTypeCmpGreaterOrEq, stmt->getRHS());
1415 case BO_EQ:
1413 case clang::BO_EQ:
14161414 return trans_create_bin_op(c, scope, stmt->getLHS(), BinOpTypeCmpEq, stmt->getRHS());
1417 case BO_NE:
1415 case clang::BO_NE:
14181416 return trans_create_bin_op(c, scope, stmt->getLHS(), BinOpTypeCmpNotEq, stmt->getRHS());
1419 case BO_And:
1417 case clang::BO_And:
14201418 return trans_create_bin_op(c, scope, stmt->getLHS(), BinOpTypeBinAnd, stmt->getRHS());
1421 case BO_Xor:
1419 case clang::BO_Xor:
14221420 return trans_create_bin_op(c, scope, stmt->getLHS(), BinOpTypeBinXor, stmt->getRHS());
1423 case BO_Or:
1421 case clang::BO_Or:
14241422 return trans_create_bin_op(c, scope, stmt->getLHS(), BinOpTypeBinOr, stmt->getRHS());
1425 case BO_LAnd:
1423 case clang::BO_LAnd:
14261424 return trans_create_bool_bin_op(c, scope, stmt->getLHS(), BinOpTypeBoolAnd, stmt->getRHS());
1427 case BO_LOr:
1425 case clang::BO_LOr:
14281426 return trans_create_bool_bin_op(c, scope, stmt->getLHS(), BinOpTypeBoolOr, stmt->getRHS());
1429 case BO_Assign:
1427 case clang::BO_Assign:
14301428 return trans_create_assign(c, result_used, scope, stmt->getLHS(), stmt->getRHS());
1431 case BO_Comma:
1429 case clang::BO_Comma:
14321430 {
14331431 TransScopeBlock *scope_block = trans_scope_block_create(c, scope);
14341432 Buf *label_name = buf_create_from_str("x");
......@@ -1445,16 +1443,16 @@ static AstNode *trans_binary_operator(Context *c, ResultUsed result_used, TransS
14451443 scope_block->node->data.block.statements.append(trans_create_node_break(c, label_name, maybe_suppress_result(c, result_used, rhs)));
14461444 return scope_block->node;
14471445 }
1448 case BO_MulAssign:
1449 case BO_DivAssign:
1450 case BO_RemAssign:
1451 case BO_AddAssign:
1452 case BO_SubAssign:
1453 case BO_ShlAssign:
1454 case BO_ShrAssign:
1455 case BO_AndAssign:
1456 case BO_XorAssign:
1457 case BO_OrAssign:
1446 case clang::BO_MulAssign:
1447 case clang::BO_DivAssign:
1448 case clang::BO_RemAssign:
1449 case clang::BO_AddAssign:
1450 case clang::BO_SubAssign:
1451 case clang::BO_ShlAssign:
1452 case clang::BO_ShrAssign:
1453 case clang::BO_AndAssign:
1454 case clang::BO_XorAssign:
1455 case clang::BO_OrAssign:
14581456 zig_unreachable();
14591457 }
14601458
......@@ -1462,9 +1460,9 @@ static AstNode *trans_binary_operator(Context *c, ResultUsed result_used, TransS
14621460}
14631461
14641462static AstNode *trans_create_compound_assign_shift(Context *c, ResultUsed result_used, TransScope *scope,
1465 const CompoundAssignOperator *stmt, BinOpType assign_op, BinOpType bin_op)
1463 const clang::CompoundAssignOperator *stmt, BinOpType assign_op, BinOpType bin_op)
14661464{
1467 const SourceLocation &rhs_location = stmt->getRHS()->getLocStart();
1465 const clang::SourceLocation &rhs_location = stmt->getRHS()->getLocStart();
14681466 AstNode *rhs_type = qual_type_to_log2_int_ref(c, stmt->getComputationLHSType(), rhs_location);
14691467
14701468 bool use_intermediate_casts = stmt->getComputationLHSType().getTypePtr() != stmt->getComputationResultType().getTypePtr();
......@@ -1544,7 +1542,7 @@ static AstNode *trans_create_compound_assign_shift(Context *c, ResultUsed result
15441542}
15451543
15461544static AstNode *trans_create_compound_assign(Context *c, ResultUsed result_used, TransScope *scope,
1547 const CompoundAssignOperator *stmt, BinOpType assign_op, BinOpType bin_op)
1545 const clang::CompoundAssignOperator *stmt, BinOpType assign_op, BinOpType bin_op)
15481546{
15491547 if (result_used == ResultUsedNo) {
15501548 // simple common case, where the C and Zig are identical:
......@@ -1604,76 +1602,76 @@ static AstNode *trans_create_compound_assign(Context *c, ResultUsed result_used,
16041602
16051603
16061604static AstNode *trans_compound_assign_operator(Context *c, ResultUsed result_used, TransScope *scope,
1607 const CompoundAssignOperator *stmt)
1605 const clang::CompoundAssignOperator *stmt)
16081606{
16091607 switch (stmt->getOpcode()) {
1610 case BO_MulAssign:
1608 case clang::BO_MulAssign:
16111609 if (qual_type_has_wrapping_overflow(c, stmt->getType()))
16121610 return trans_create_compound_assign(c, result_used, scope, stmt, BinOpTypeAssignTimesWrap, BinOpTypeMultWrap);
16131611 else
16141612 return trans_create_compound_assign(c, result_used, scope, stmt, BinOpTypeAssignTimes, BinOpTypeMult);
1615 case BO_DivAssign:
1616 emit_warning(c, stmt->getLocStart(), "TODO handle more C compound assign operators: BO_DivAssign");
1613 case clang::BO_DivAssign:
1614 emit_warning(c, stmt->getLocStart(), "TODO handle more C compound assign operators: clang::BO_DivAssign");
16171615 return nullptr;
1618 case BO_RemAssign:
1619 emit_warning(c, stmt->getLocStart(), "TODO handle more C compound assign operators: BO_RemAssign");
1616 case clang::BO_RemAssign:
1617 emit_warning(c, stmt->getLocStart(), "TODO handle more C compound assign operators: clang::BO_RemAssign");
16201618 return nullptr;
1621 case BO_Cmp:
1622 emit_warning(c, stmt->getLocStart(), "TODO handle more C compound assign operators: BO_Cmp");
1619 case clang::BO_Cmp:
1620 emit_warning(c, stmt->getLocStart(), "TODO handle more C compound assign operators: clang::BO_Cmp");
16231621 return nullptr;
1624 case BO_AddAssign:
1622 case clang::BO_AddAssign:
16251623 if (qual_type_has_wrapping_overflow(c, stmt->getType()))
16261624 return trans_create_compound_assign(c, result_used, scope, stmt, BinOpTypeAssignPlusWrap, BinOpTypeAddWrap);
16271625 else
16281626 return trans_create_compound_assign(c, result_used, scope, stmt, BinOpTypeAssignPlus, BinOpTypeAdd);
1629 case BO_SubAssign:
1627 case clang::BO_SubAssign:
16301628 if (qual_type_has_wrapping_overflow(c, stmt->getType()))
16311629 return trans_create_compound_assign(c, result_used, scope, stmt, BinOpTypeAssignMinusWrap, BinOpTypeSubWrap);
16321630 else
16331631 return trans_create_compound_assign(c, result_used, scope, stmt, BinOpTypeAssignMinus, BinOpTypeSub);
1634 case BO_ShlAssign:
1632 case clang::BO_ShlAssign:
16351633 return trans_create_compound_assign_shift(c, result_used, scope, stmt, BinOpTypeAssignBitShiftLeft, BinOpTypeBitShiftLeft);
1636 case BO_ShrAssign:
1634 case clang::BO_ShrAssign:
16371635 return trans_create_compound_assign_shift(c, result_used, scope, stmt, BinOpTypeAssignBitShiftRight, BinOpTypeBitShiftRight);
1638 case BO_AndAssign:
1636 case clang::BO_AndAssign:
16391637 return trans_create_compound_assign(c, result_used, scope, stmt, BinOpTypeAssignBitAnd, BinOpTypeBinAnd);
1640 case BO_XorAssign:
1638 case clang::BO_XorAssign:
16411639 return trans_create_compound_assign(c, result_used, scope, stmt, BinOpTypeAssignBitXor, BinOpTypeBinXor);
1642 case BO_OrAssign:
1640 case clang::BO_OrAssign:
16431641 return trans_create_compound_assign(c, result_used, scope, stmt, BinOpTypeAssignBitOr, BinOpTypeBinOr);
1644 case BO_PtrMemD:
1645 case BO_PtrMemI:
1646 case BO_Assign:
1647 case BO_Mul:
1648 case BO_Div:
1649 case BO_Rem:
1650 case BO_Add:
1651 case BO_Sub:
1652 case BO_Shl:
1653 case BO_Shr:
1654 case BO_LT:
1655 case BO_GT:
1656 case BO_LE:
1657 case BO_GE:
1658 case BO_EQ:
1659 case BO_NE:
1660 case BO_And:
1661 case BO_Xor:
1662 case BO_Or:
1663 case BO_LAnd:
1664 case BO_LOr:
1665 case BO_Comma:
1642 case clang::BO_PtrMemD:
1643 case clang::BO_PtrMemI:
1644 case clang::BO_Assign:
1645 case clang::BO_Mul:
1646 case clang::BO_Div:
1647 case clang::BO_Rem:
1648 case clang::BO_Add:
1649 case clang::BO_Sub:
1650 case clang::BO_Shl:
1651 case clang::BO_Shr:
1652 case clang::BO_LT:
1653 case clang::BO_GT:
1654 case clang::BO_LE:
1655 case clang::BO_GE:
1656 case clang::BO_EQ:
1657 case clang::BO_NE:
1658 case clang::BO_And:
1659 case clang::BO_Xor:
1660 case clang::BO_Or:
1661 case clang::BO_LAnd:
1662 case clang::BO_LOr:
1663 case clang::BO_Comma:
16661664 zig_unreachable();
16671665 }
16681666
16691667 zig_unreachable();
16701668}
16711669
1672static AstNode *trans_implicit_cast_expr(Context *c, TransScope *scope, const ImplicitCastExpr *stmt) {
1670static AstNode *trans_implicit_cast_expr(Context *c, TransScope *scope, const clang::ImplicitCastExpr *stmt) {
16731671 switch (stmt->getCastKind()) {
1674 case CK_LValueToRValue:
1672 case clang::CK_LValueToRValue:
16751673 return trans_expr(c, ResultUsedYes, scope, stmt->getSubExpr(), TransRValue);
1676 case CK_IntegralCast:
1674 case clang::CK_IntegralCast:
16771675 {
16781676 AstNode *target_node = trans_expr(c, ResultUsedYes, scope, stmt->getSubExpr(), TransRValue);
16791677 if (target_node == nullptr)
......@@ -1681,15 +1679,15 @@ static AstNode *trans_implicit_cast_expr(Context *c, TransScope *scope, const Im
16811679 return trans_c_cast(c, stmt->getExprLoc(), stmt->getType(),
16821680 stmt->getSubExpr()->getType(), target_node);
16831681 }
1684 case CK_FunctionToPointerDecay:
1685 case CK_ArrayToPointerDecay:
1682 case clang::CK_FunctionToPointerDecay:
1683 case clang::CK_ArrayToPointerDecay:
16861684 {
16871685 AstNode *target_node = trans_expr(c, ResultUsedYes, scope, stmt->getSubExpr(), TransRValue);
16881686 if (target_node == nullptr)
16891687 return nullptr;
16901688 return target_node;
16911689 }
1692 case CK_BitCast:
1690 case clang::CK_BitCast:
16931691 {
16941692 AstNode *target_node = trans_expr(c, ResultUsedYes, scope, stmt->getSubExpr(), TransRValue);
16951693 if (target_node == nullptr)
......@@ -1706,170 +1704,170 @@ static AstNode *trans_implicit_cast_expr(Context *c, TransScope *scope, const Im
17061704 node->data.fn_call_expr.params.append(target_node);
17071705 return node;
17081706 }
1709 case CK_NullToPointer:
1707 case clang::CK_NullToPointer:
17101708 return trans_create_node_unsigned(c, 0);
1711 case CK_Dependent:
1712 emit_warning(c, stmt->getLocStart(), "TODO handle C translation cast CK_Dependent");
1709 case clang::CK_Dependent:
1710 emit_warning(c, stmt->getLocStart(), "TODO handle C translation cast clang::CK_Dependent");
17131711 return nullptr;
1714 case CK_LValueBitCast:
1715 emit_warning(c, stmt->getLocStart(), "TODO handle C translation cast CK_LValueBitCast");
1712 case clang::CK_LValueBitCast:
1713 emit_warning(c, stmt->getLocStart(), "TODO handle C translation cast clang::CK_LValueBitCast");
17161714 return nullptr;
1717 case CK_NoOp:
1718 emit_warning(c, stmt->getLocStart(), "TODO handle C translation cast CK_NoOp");
1715 case clang::CK_NoOp:
1716 emit_warning(c, stmt->getLocStart(), "TODO handle C translation cast clang::CK_NoOp");
17191717 return nullptr;
1720 case CK_BaseToDerived:
1721 emit_warning(c, stmt->getLocStart(), "TODO handle C translation cast CK_BaseToDerived");
1718 case clang::CK_BaseToDerived:
1719 emit_warning(c, stmt->getLocStart(), "TODO handle C translation cast clang::CK_BaseToDerived");
17221720 return nullptr;
1723 case CK_DerivedToBase:
1724 emit_warning(c, stmt->getLocStart(), "TODO handle C translation cast CK_DerivedToBase");
1721 case clang::CK_DerivedToBase:
1722 emit_warning(c, stmt->getLocStart(), "TODO handle C translation cast clang::CK_DerivedToBase");
17251723 return nullptr;
1726 case CK_UncheckedDerivedToBase:
1727 emit_warning(c, stmt->getLocStart(), "TODO handle C translation cast CK_UncheckedDerivedToBase");
1724 case clang::CK_UncheckedDerivedToBase:
1725 emit_warning(c, stmt->getLocStart(), "TODO handle C translation cast clang::CK_UncheckedDerivedToBase");
17281726 return nullptr;
1729 case CK_Dynamic:
1730 emit_warning(c, stmt->getLocStart(), "TODO handle C translation cast CK_Dynamic");
1727 case clang::CK_Dynamic:
1728 emit_warning(c, stmt->getLocStart(), "TODO handle C translation cast clang::CK_Dynamic");
17311729 return nullptr;
1732 case CK_ToUnion:
1733 emit_warning(c, stmt->getLocStart(), "TODO handle C translation cast CK_ToUnion");
1730 case clang::CK_ToUnion:
1731 emit_warning(c, stmt->getLocStart(), "TODO handle C translation cast clang::CK_ToUnion");
17341732 return nullptr;
1735 case CK_NullToMemberPointer:
1736 emit_warning(c, stmt->getLocStart(), "TODO handle C translation cast CK_NullToMemberPointer");
1733 case clang::CK_NullToMemberPointer:
1734 emit_warning(c, stmt->getLocStart(), "TODO handle C translation cast clang::CK_NullToMemberPointer");
17371735 return nullptr;
1738 case CK_BaseToDerivedMemberPointer:
1739 emit_warning(c, stmt->getLocStart(), "TODO handle C translation cast CK_BaseToDerivedMemberPointer");
1736 case clang::CK_BaseToDerivedMemberPointer:
1737 emit_warning(c, stmt->getLocStart(), "TODO handle C translation cast clang::CK_BaseToDerivedMemberPointer");
17401738 return nullptr;
1741 case CK_DerivedToBaseMemberPointer:
1742 emit_warning(c, stmt->getLocStart(), "TODO handle C translation cast CK_DerivedToBaseMemberPointer");
1739 case clang::CK_DerivedToBaseMemberPointer:
1740 emit_warning(c, stmt->getLocStart(), "TODO handle C translation cast clang::CK_DerivedToBaseMemberPointer");
17431741 return nullptr;
1744 case CK_MemberPointerToBoolean:
1745 emit_warning(c, stmt->getLocStart(), "TODO handle C translation cast CK_MemberPointerToBoolean");
1742 case clang::CK_MemberPointerToBoolean:
1743 emit_warning(c, stmt->getLocStart(), "TODO handle C translation cast clang::CK_MemberPointerToBoolean");
17461744 return nullptr;
1747 case CK_ReinterpretMemberPointer:
1748 emit_warning(c, stmt->getLocStart(), "TODO handle C translation cast CK_ReinterpretMemberPointer");
1745 case clang::CK_ReinterpretMemberPointer:
1746 emit_warning(c, stmt->getLocStart(), "TODO handle C translation cast clang::CK_ReinterpretMemberPointer");
17491747 return nullptr;
1750 case CK_UserDefinedConversion:
1751 emit_warning(c, stmt->getLocStart(), "TODO handle C translation cast CK_UserDefinedConversion");
1748 case clang::CK_UserDefinedConversion:
1749 emit_warning(c, stmt->getLocStart(), "TODO handle C translation cast clang::CK_UserDefinedConversion");
17521750 return nullptr;
1753 case CK_ConstructorConversion:
1754 emit_warning(c, stmt->getLocStart(), "TODO handle C translation cast CK_ConstructorConversion");
1751 case clang::CK_ConstructorConversion:
1752 emit_warning(c, stmt->getLocStart(), "TODO handle C translation cast clang::CK_ConstructorConversion");
17551753 return nullptr;
1756 case CK_IntegralToPointer:
1757 emit_warning(c, stmt->getLocStart(), "TODO handle C translation cast CK_IntegralToPointer");
1754 case clang::CK_IntegralToPointer:
1755 emit_warning(c, stmt->getLocStart(), "TODO handle C translation cast clang::CK_IntegralToPointer");
17581756 return nullptr;
1759 case CK_PointerToIntegral:
1760 emit_warning(c, stmt->getLocStart(), "TODO handle C translation cast CK_PointerToIntegral");
1757 case clang::CK_PointerToIntegral:
1758 emit_warning(c, stmt->getLocStart(), "TODO handle C translation cast clang::CK_PointerToIntegral");
17611759 return nullptr;
1762 case CK_PointerToBoolean:
1763 emit_warning(c, stmt->getLocStart(), "TODO handle C translation cast CK_PointerToBoolean");
1760 case clang::CK_PointerToBoolean:
1761 emit_warning(c, stmt->getLocStart(), "TODO handle C translation cast clang::CK_PointerToBoolean");
17641762 return nullptr;
1765 case CK_ToVoid:
1766 emit_warning(c, stmt->getLocStart(), "TODO handle C translation cast CK_ToVoid");
1763 case clang::CK_ToVoid:
1764 emit_warning(c, stmt->getLocStart(), "TODO handle C translation cast clang::CK_ToVoid");
17671765 return nullptr;
1768 case CK_VectorSplat:
1769 emit_warning(c, stmt->getLocStart(), "TODO handle C translation cast CK_VectorSplat");
1766 case clang::CK_VectorSplat:
1767 emit_warning(c, stmt->getLocStart(), "TODO handle C translation cast clang::CK_VectorSplat");
17701768 return nullptr;
1771 case CK_IntegralToBoolean:
1772 emit_warning(c, stmt->getLocStart(), "TODO handle C translation cast CK_IntegralToBoolean");
1769 case clang::CK_IntegralToBoolean:
1770 emit_warning(c, stmt->getLocStart(), "TODO handle C translation cast clang::CK_IntegralToBoolean");
17731771 return nullptr;
1774 case CK_IntegralToFloating:
1775 emit_warning(c, stmt->getLocStart(), "TODO handle C translation cast CK_IntegralToFloating");
1772 case clang::CK_IntegralToFloating:
1773 emit_warning(c, stmt->getLocStart(), "TODO handle C translation cast clang::CK_IntegralToFloating");
17761774 return nullptr;
1777 case CK_FloatingToIntegral:
1778 emit_warning(c, stmt->getLocStart(), "TODO handle C translation cast CK_FloatingToIntegral");
1775 case clang::CK_FloatingToIntegral:
1776 emit_warning(c, stmt->getLocStart(), "TODO handle C translation cast clang::CK_FloatingToIntegral");
17791777 return nullptr;
1780 case CK_FloatingToBoolean:
1781 emit_warning(c, stmt->getLocStart(), "TODO handle C translation cast CK_FloatingToBoolean");
1778 case clang::CK_FloatingToBoolean:
1779 emit_warning(c, stmt->getLocStart(), "TODO handle C translation cast clang::CK_FloatingToBoolean");
17821780 return nullptr;
1783 case CK_BooleanToSignedIntegral:
1784 emit_warning(c, stmt->getLocStart(), "TODO handle C translation cast CK_BooleanToSignedIntegral");
1781 case clang::CK_BooleanToSignedIntegral:
1782 emit_warning(c, stmt->getLocStart(), "TODO handle C translation cast clang::CK_BooleanToSignedIntegral");
17851783 return nullptr;
1786 case CK_FloatingCast:
1787 emit_warning(c, stmt->getLocStart(), "TODO handle C translation cast CK_FloatingCast");
1784 case clang::CK_FloatingCast:
1785 emit_warning(c, stmt->getLocStart(), "TODO handle C translation cast clang::CK_FloatingCast");
17881786 return nullptr;
1789 case CK_CPointerToObjCPointerCast:
1790 emit_warning(c, stmt->getLocStart(), "TODO handle C translation cast CK_CPointerToObjCPointerCast");
1787 case clang::CK_CPointerToObjCPointerCast:
1788 emit_warning(c, stmt->getLocStart(), "TODO handle C translation cast clang::CK_CPointerToObjCPointerCast");
17911789 return nullptr;
1792 case CK_BlockPointerToObjCPointerCast:
1793 emit_warning(c, stmt->getLocStart(), "TODO handle C translation cast CK_BlockPointerToObjCPointerCast");
1790 case clang::CK_BlockPointerToObjCPointerCast:
1791 emit_warning(c, stmt->getLocStart(), "TODO handle C translation cast clang::CK_BlockPointerToObjCPointerCast");
17941792 return nullptr;
1795 case CK_AnyPointerToBlockPointerCast:
1796 emit_warning(c, stmt->getLocStart(), "TODO handle C translation cast CK_AnyPointerToBlockPointerCast");
1793 case clang::CK_AnyPointerToBlockPointerCast:
1794 emit_warning(c, stmt->getLocStart(), "TODO handle C translation cast clang::CK_AnyPointerToBlockPointerCast");
17971795 return nullptr;
1798 case CK_ObjCObjectLValueCast:
1799 emit_warning(c, stmt->getLocStart(), "TODO handle C translation cast CK_ObjCObjectLValueCast");
1796 case clang::CK_ObjCObjectLValueCast:
1797 emit_warning(c, stmt->getLocStart(), "TODO handle C translation cast clang::CK_ObjCObjectLValueCast");
18001798 return nullptr;
1801 case CK_FloatingRealToComplex:
1802 emit_warning(c, stmt->getLocStart(), "TODO handle C translation cast CK_FloatingRealToComplex");
1799 case clang::CK_FloatingRealToComplex:
1800 emit_warning(c, stmt->getLocStart(), "TODO handle C translation cast clang::CK_FloatingRealToComplex");
18031801 return nullptr;
1804 case CK_FloatingComplexToReal:
1805 emit_warning(c, stmt->getLocStart(), "TODO handle C translation cast CK_FloatingComplexToReal");
1802 case clang::CK_FloatingComplexToReal:
1803 emit_warning(c, stmt->getLocStart(), "TODO handle C translation cast clang::CK_FloatingComplexToReal");
18061804 return nullptr;
1807 case CK_FloatingComplexToBoolean:
1808 emit_warning(c, stmt->getLocStart(), "TODO handle C translation cast CK_FloatingComplexToBoolean");
1805 case clang::CK_FloatingComplexToBoolean:
1806 emit_warning(c, stmt->getLocStart(), "TODO handle C translation cast clang::CK_FloatingComplexToBoolean");
18091807 return nullptr;
1810 case CK_FloatingComplexCast:
1811 emit_warning(c, stmt->getLocStart(), "TODO handle C translation cast CK_FloatingComplexCast");
1808 case clang::CK_FloatingComplexCast:
1809 emit_warning(c, stmt->getLocStart(), "TODO handle C translation cast clang::CK_FloatingComplexCast");
18121810 return nullptr;
1813 case CK_FloatingComplexToIntegralComplex:
1814 emit_warning(c, stmt->getLocStart(), "TODO handle C translation cast CK_FloatingComplexToIntegralComplex");
1811 case clang::CK_FloatingComplexToIntegralComplex:
1812 emit_warning(c, stmt->getLocStart(), "TODO handle C translation cast clang::CK_FloatingComplexToIntegralComplex");
18151813 return nullptr;
1816 case CK_IntegralRealToComplex:
1817 emit_warning(c, stmt->getLocStart(), "TODO handle C translation cast CK_IntegralRealToComplex");
1814 case clang::CK_IntegralRealToComplex:
1815 emit_warning(c, stmt->getLocStart(), "TODO handle C translation cast clang::CK_IntegralRealToComplex");
18181816 return nullptr;
1819 case CK_IntegralComplexToReal:
1820 emit_warning(c, stmt->getLocStart(), "TODO handle C translation cast CK_IntegralComplexToReal");
1817 case clang::CK_IntegralComplexToReal:
1818 emit_warning(c, stmt->getLocStart(), "TODO handle C translation cast clang::CK_IntegralComplexToReal");
18211819 return nullptr;
1822 case CK_IntegralComplexToBoolean:
1823 emit_warning(c, stmt->getLocStart(), "TODO handle C translation cast CK_IntegralComplexToBoolean");
1820 case clang::CK_IntegralComplexToBoolean:
1821 emit_warning(c, stmt->getLocStart(), "TODO handle C translation cast clang::CK_IntegralComplexToBoolean");
18241822 return nullptr;
1825 case CK_IntegralComplexCast:
1826 emit_warning(c, stmt->getLocStart(), "TODO handle C translation cast CK_IntegralComplexCast");
1823 case clang::CK_IntegralComplexCast:
1824 emit_warning(c, stmt->getLocStart(), "TODO handle C translation cast clang::CK_IntegralComplexCast");
18271825 return nullptr;
1828 case CK_IntegralComplexToFloatingComplex:
1829 emit_warning(c, stmt->getLocStart(), "TODO handle C translation cast CK_IntegralComplexToFloatingComplex");
1826 case clang::CK_IntegralComplexToFloatingComplex:
1827 emit_warning(c, stmt->getLocStart(), "TODO handle C translation cast clang::CK_IntegralComplexToFloatingComplex");
18301828 return nullptr;
1831 case CK_ARCProduceObject:
1832 emit_warning(c, stmt->getLocStart(), "TODO handle C translation cast CK_ARCProduceObject");
1829 case clang::CK_ARCProduceObject:
1830 emit_warning(c, stmt->getLocStart(), "TODO handle C translation cast clang::CK_ARCProduceObject");
18331831 return nullptr;
1834 case CK_ARCConsumeObject:
1835 emit_warning(c, stmt->getLocStart(), "TODO handle C translation cast CK_ARCConsumeObject");
1832 case clang::CK_ARCConsumeObject:
1833 emit_warning(c, stmt->getLocStart(), "TODO handle C translation cast clang::CK_ARCConsumeObject");
18361834 return nullptr;
1837 case CK_ARCReclaimReturnedObject:
1838 emit_warning(c, stmt->getLocStart(), "TODO handle C translation cast CK_ARCReclaimReturnedObject");
1835 case clang::CK_ARCReclaimReturnedObject:
1836 emit_warning(c, stmt->getLocStart(), "TODO handle C translation cast clang::CK_ARCReclaimReturnedObject");
18391837 return nullptr;
1840 case CK_ARCExtendBlockObject:
1841 emit_warning(c, stmt->getLocStart(), "TODO handle C translation cast CK_ARCExtendBlockObject");
1838 case clang::CK_ARCExtendBlockObject:
1839 emit_warning(c, stmt->getLocStart(), "TODO handle C translation cast clang::CK_ARCExtendBlockObject");
18421840 return nullptr;
1843 case CK_AtomicToNonAtomic:
1844 emit_warning(c, stmt->getLocStart(), "TODO handle C translation cast CK_AtomicToNonAtomic");
1841 case clang::CK_AtomicToNonAtomic:
1842 emit_warning(c, stmt->getLocStart(), "TODO handle C translation cast clang::CK_AtomicToNonAtomic");
18451843 return nullptr;
1846 case CK_NonAtomicToAtomic:
1847 emit_warning(c, stmt->getLocStart(), "TODO handle C translation cast CK_NonAtomicToAtomic");
1844 case clang::CK_NonAtomicToAtomic:
1845 emit_warning(c, stmt->getLocStart(), "TODO handle C translation cast clang::CK_NonAtomicToAtomic");
18481846 return nullptr;
1849 case CK_CopyAndAutoreleaseBlockObject:
1850 emit_warning(c, stmt->getLocStart(), "TODO handle C translation cast CK_CopyAndAutoreleaseBlockObject");
1847 case clang::CK_CopyAndAutoreleaseBlockObject:
1848 emit_warning(c, stmt->getLocStart(), "TODO handle C translation cast clang::CK_CopyAndAutoreleaseBlockObject");
18511849 return nullptr;
1852 case CK_BuiltinFnToFnPtr:
1853 emit_warning(c, stmt->getLocStart(), "TODO handle C translation cast CK_BuiltinFnToFnPtr");
1850 case clang::CK_BuiltinFnToFnPtr:
1851 emit_warning(c, stmt->getLocStart(), "TODO handle C translation cast clang::CK_BuiltinFnToFnPtr");
18541852 return nullptr;
1855 case CK_ZeroToOCLEvent:
1856 emit_warning(c, stmt->getLocStart(), "TODO handle C translation cast CK_ZeroToOCLEvent");
1853 case clang::CK_ZeroToOCLEvent:
1854 emit_warning(c, stmt->getLocStart(), "TODO handle C translation cast clang::CK_ZeroToOCLEvent");
18571855 return nullptr;
1858 case CK_ZeroToOCLQueue:
1859 emit_warning(c, stmt->getLocStart(), "TODO handle C translation cast CK_ZeroToOCLQueue");
1856 case clang::CK_ZeroToOCLQueue:
1857 emit_warning(c, stmt->getLocStart(), "TODO handle C translation cast clang::CK_ZeroToOCLQueue");
18601858 return nullptr;
1861 case CK_AddressSpaceConversion:
1862 emit_warning(c, stmt->getLocStart(), "TODO handle C translation cast CK_AddressSpaceConversion");
1859 case clang::CK_AddressSpaceConversion:
1860 emit_warning(c, stmt->getLocStart(), "TODO handle C translation cast clang::CK_AddressSpaceConversion");
18631861 return nullptr;
1864 case CK_IntToOCLSampler:
1865 emit_warning(c, stmt->getLocStart(), "TODO handle C translation cast CK_IntToOCLSampler");
1862 case clang::CK_IntToOCLSampler:
1863 emit_warning(c, stmt->getLocStart(), "TODO handle C translation cast clang::CK_IntToOCLSampler");
18661864 return nullptr;
18671865 }
18681866 zig_unreachable();
18691867}
18701868
1871static AstNode *trans_decl_ref_expr(Context *c, TransScope *scope, const DeclRefExpr *stmt, TransLRValue lrval) {
1872 const ValueDecl *value_decl = stmt->getDecl();
1869static AstNode *trans_decl_ref_expr(Context *c, TransScope *scope, const clang::DeclRefExpr *stmt, TransLRValue lrval) {
1870 const clang::ValueDecl *value_decl = stmt->getDecl();
18731871 Buf *c_symbol_name = buf_create_from_str(decl_name(value_decl));
18741872 Buf *zig_symbol_name = trans_lookup_zig_symbol(c, scope, c_symbol_name);
18751873 if (lrval == TransLValue) {
......@@ -1879,9 +1877,9 @@ static AstNode *trans_decl_ref_expr(Context *c, TransScope *scope, const DeclRef
18791877}
18801878
18811879static AstNode *trans_create_post_crement(Context *c, ResultUsed result_used, TransScope *scope,
1882 const UnaryOperator *stmt, BinOpType assign_op)
1880 const clang::UnaryOperator *stmt, BinOpType assign_op)
18831881{
1884 Expr *op_expr = stmt->getSubExpr();
1882 clang::Expr *op_expr = stmt->getSubExpr();
18851883
18861884 if (result_used == ResultUsedNo) {
18871885 // common case
......@@ -1935,9 +1933,9 @@ static AstNode *trans_create_post_crement(Context *c, ResultUsed result_used, Tr
19351933}
19361934
19371935static AstNode *trans_create_pre_crement(Context *c, ResultUsed result_used, TransScope *scope,
1938 const UnaryOperator *stmt, BinOpType assign_op)
1936 const clang::UnaryOperator *stmt, BinOpType assign_op)
19391937{
1940 Expr *op_expr = stmt->getSubExpr();
1938 clang::Expr *op_expr = stmt->getSubExpr();
19411939
19421940 if (result_used == ResultUsedNo) {
19431941 // common case
......@@ -1984,36 +1982,36 @@ static AstNode *trans_create_pre_crement(Context *c, ResultUsed result_used, Tra
19841982 return child_scope->node;
19851983}
19861984
1987static AstNode *trans_unary_operator(Context *c, ResultUsed result_used, TransScope *scope, const UnaryOperator *stmt) {
1985static AstNode *trans_unary_operator(Context *c, ResultUsed result_used, TransScope *scope, const clang::UnaryOperator *stmt) {
19881986 switch (stmt->getOpcode()) {
1989 case UO_PostInc:
1987 case clang::UO_PostInc:
19901988 if (qual_type_has_wrapping_overflow(c, stmt->getType()))
19911989 return trans_create_post_crement(c, result_used, scope, stmt, BinOpTypeAssignPlusWrap);
19921990 else
19931991 return trans_create_post_crement(c, result_used, scope, stmt, BinOpTypeAssignPlus);
1994 case UO_PostDec:
1992 case clang::UO_PostDec:
19951993 if (qual_type_has_wrapping_overflow(c, stmt->getType()))
19961994 return trans_create_post_crement(c, result_used, scope, stmt, BinOpTypeAssignMinusWrap);
19971995 else
19981996 return trans_create_post_crement(c, result_used, scope, stmt, BinOpTypeAssignMinus);
1999 case UO_PreInc:
1997 case clang::UO_PreInc:
20001998 if (qual_type_has_wrapping_overflow(c, stmt->getType()))
20011999 return trans_create_pre_crement(c, result_used, scope, stmt, BinOpTypeAssignPlusWrap);
20022000 else
20032001 return trans_create_pre_crement(c, result_used, scope, stmt, BinOpTypeAssignPlus);
2004 case UO_PreDec:
2002 case clang::UO_PreDec:
20052003 if (qual_type_has_wrapping_overflow(c, stmt->getType()))
20062004 return trans_create_pre_crement(c, result_used, scope, stmt, BinOpTypeAssignMinusWrap);
20072005 else
20082006 return trans_create_pre_crement(c, result_used, scope, stmt, BinOpTypeAssignMinus);
2009 case UO_AddrOf:
2007 case clang::UO_AddrOf:
20102008 {
20112009 AstNode *value_node = trans_expr(c, result_used, scope, stmt->getSubExpr(), TransLValue);
20122010 if (value_node == nullptr)
20132011 return value_node;
20142012 return trans_create_node_addr_of(c, value_node);
20152013 }
2016 case UO_Deref:
2014 case clang::UO_Deref:
20172015 {
20182016 AstNode *value_node = trans_expr(c, result_used, scope, stmt->getSubExpr(), TransRValue);
20192017 if (value_node == nullptr)
......@@ -2024,12 +2022,12 @@ static AstNode *trans_unary_operator(Context *c, ResultUsed result_used, TransSc
20242022 AstNode *unwrapped = trans_create_node_unwrap_null(c, value_node);
20252023 return trans_create_node_ptr_deref(c, unwrapped);
20262024 }
2027 case UO_Plus:
2028 emit_warning(c, stmt->getLocStart(), "TODO handle C translation UO_Plus");
2025 case clang::UO_Plus:
2026 emit_warning(c, stmt->getLocStart(), "TODO handle C translation clang::UO_Plus");
20292027 return nullptr;
2030 case UO_Minus:
2028 case clang::UO_Minus:
20312029 {
2032 Expr *op_expr = stmt->getSubExpr();
2030 clang::Expr *op_expr = stmt->getSubExpr();
20332031 if (!qual_type_has_wrapping_overflow(c, op_expr->getType())) {
20342032 AstNode *node = trans_create_node(c, NodeTypePrefixOpExpr);
20352033 node->data.prefix_op_expr.prefix_op = PrefixOpNegation;
......@@ -2055,41 +2053,41 @@ static AstNode *trans_unary_operator(Context *c, ResultUsed result_used, TransSc
20552053 return nullptr;
20562054 }
20572055 }
2058 case UO_Not:
2056 case clang::UO_Not:
20592057 {
2060 Expr *op_expr = stmt->getSubExpr();
2058 clang::Expr *op_expr = stmt->getSubExpr();
20612059 AstNode *sub_node = trans_expr(c, ResultUsedYes, scope, op_expr, TransRValue);
20622060 if (sub_node == nullptr)
20632061 return nullptr;
20642062
20652063 return trans_create_node_prefix_op(c, PrefixOpBinNot, sub_node);
20662064 }
2067 case UO_LNot:
2065 case clang::UO_LNot:
20682066 {
2069 Expr *op_expr = stmt->getSubExpr();
2067 clang::Expr *op_expr = stmt->getSubExpr();
20702068 AstNode *sub_node = trans_bool_expr(c, ResultUsedYes, scope, op_expr, TransRValue);
20712069 if (sub_node == nullptr)
20722070 return nullptr;
20732071
20742072 return trans_create_node_prefix_op(c, PrefixOpBoolNot, sub_node);
20752073 }
2076 case UO_Real:
2077 emit_warning(c, stmt->getLocStart(), "TODO handle C translation UO_Real");
2074 case clang::UO_Real:
2075 emit_warning(c, stmt->getLocStart(), "TODO handle C translation clang::UO_Real");
20782076 return nullptr;
2079 case UO_Imag:
2080 emit_warning(c, stmt->getLocStart(), "TODO handle C translation UO_Imag");
2077 case clang::UO_Imag:
2078 emit_warning(c, stmt->getLocStart(), "TODO handle C translation clang::UO_Imag");
20812079 return nullptr;
2082 case UO_Extension:
2083 emit_warning(c, stmt->getLocStart(), "TODO handle C translation UO_Extension");
2080 case clang::UO_Extension:
2081 emit_warning(c, stmt->getLocStart(), "TODO handle C translation clang::UO_Extension");
20842082 return nullptr;
2085 case UO_Coawait:
2086 emit_warning(c, stmt->getLocStart(), "TODO handle C translation UO_Coawait");
2083 case clang::UO_Coawait:
2084 emit_warning(c, stmt->getLocStart(), "TODO handle C translation clang::UO_Coawait");
20872085 return nullptr;
20882086 }
20892087 zig_unreachable();
20902088}
20912089
2092static int trans_local_declaration(Context *c, TransScope *scope, const DeclStmt *stmt,
2090static int trans_local_declaration(Context *c, TransScope *scope, const clang::DeclStmt *stmt,
20932091 AstNode **out_node, TransScope **out_scope)
20942092{
20952093 // declarations are added via the scope
......@@ -2099,11 +2097,11 @@ static int trans_local_declaration(Context *c, TransScope *scope, const DeclStmt
20992097 assert(scope_block != nullptr);
21002098
21012099 for (auto iter = stmt->decl_begin(); iter != stmt->decl_end(); iter++) {
2102 Decl *decl = *iter;
2100 clang::Decl *decl = *iter;
21032101 switch (decl->getKind()) {
2104 case Decl::Var: {
2105 VarDecl *var_decl = (VarDecl *)decl;
2106 QualType qual_type = var_decl->getTypeSourceInfo()->getType();
2102 case clang::Decl::Var: {
2103 clang::VarDecl *var_decl = (clang::VarDecl *)decl;
2104 clang::QualType qual_type = var_decl->getTypeSourceInfo()->getType();
21072105 AstNode *init_node = nullptr;
21082106 if (var_decl->hasInit()) {
21092107 init_node = trans_expr(c, ResultUsedYes, scope, var_decl->getInit(), TransRValue);
......@@ -2128,220 +2126,220 @@ static int trans_local_declaration(Context *c, TransScope *scope, const DeclStmt
21282126 scope_block->node->data.block.statements.append(node);
21292127 continue;
21302128 }
2131 case Decl::AccessSpec:
2129 case clang::Decl::AccessSpec:
21322130 emit_warning(c, stmt->getLocStart(), "TODO handle decl kind AccessSpec");
21332131 return ErrorUnexpected;
2134 case Decl::Block:
2132 case clang::Decl::Block:
21352133 emit_warning(c, stmt->getLocStart(), "TODO handle decl kind Block");
21362134 return ErrorUnexpected;
2137 case Decl::Captured:
2135 case clang::Decl::Captured:
21382136 emit_warning(c, stmt->getLocStart(), "TODO handle decl kind Captured");
21392137 return ErrorUnexpected;
2140 case Decl::ClassScopeFunctionSpecialization:
2138 case clang::Decl::ClassScopeFunctionSpecialization:
21412139 emit_warning(c, stmt->getLocStart(), "TODO handle decl kind ClassScopeFunctionSpecialization");
21422140 return ErrorUnexpected;
2143 case Decl::Empty:
2141 case clang::Decl::Empty:
21442142 emit_warning(c, stmt->getLocStart(), "TODO handle decl kind Empty");
21452143 return ErrorUnexpected;
2146 case Decl::Export:
2144 case clang::Decl::Export:
21472145 emit_warning(c, stmt->getLocStart(), "TODO handle decl kind Export");
21482146 return ErrorUnexpected;
2149 case Decl::ExternCContext:
2147 case clang::Decl::ExternCContext:
21502148 emit_warning(c, stmt->getLocStart(), "TODO handle decl kind ExternCContext");
21512149 return ErrorUnexpected;
2152 case Decl::FileScopeAsm:
2150 case clang::Decl::FileScopeAsm:
21532151 emit_warning(c, stmt->getLocStart(), "TODO handle decl kind FileScopeAsm");
21542152 return ErrorUnexpected;
2155 case Decl::Friend:
2153 case clang::Decl::Friend:
21562154 emit_warning(c, stmt->getLocStart(), "TODO handle decl kind Friend");
21572155 return ErrorUnexpected;
2158 case Decl::FriendTemplate:
2156 case clang::Decl::FriendTemplate:
21592157 emit_warning(c, stmt->getLocStart(), "TODO handle decl kind FriendTemplate");
21602158 return ErrorUnexpected;
2161 case Decl::Import:
2159 case clang::Decl::Import:
21622160 emit_warning(c, stmt->getLocStart(), "TODO handle decl kind Import");
21632161 return ErrorUnexpected;
2164 case Decl::LinkageSpec:
2162 case clang::Decl::LinkageSpec:
21652163 emit_warning(c, stmt->getLocStart(), "TODO handle decl kind LinkageSpec");
21662164 return ErrorUnexpected;
2167 case Decl::Label:
2165 case clang::Decl::Label:
21682166 emit_warning(c, stmt->getLocStart(), "TODO handle decl kind Label");
21692167 return ErrorUnexpected;
2170 case Decl::Namespace:
2168 case clang::Decl::Namespace:
21712169 emit_warning(c, stmt->getLocStart(), "TODO handle decl kind Namespace");
21722170 return ErrorUnexpected;
2173 case Decl::NamespaceAlias:
2171 case clang::Decl::NamespaceAlias:
21742172 emit_warning(c, stmt->getLocStart(), "TODO handle decl kind NamespaceAlias");
21752173 return ErrorUnexpected;
2176 case Decl::ObjCCompatibleAlias:
2174 case clang::Decl::ObjCCompatibleAlias:
21772175 emit_warning(c, stmt->getLocStart(), "TODO handle decl kind ObjCCompatibleAlias");
21782176 return ErrorUnexpected;
2179 case Decl::ObjCCategory:
2177 case clang::Decl::ObjCCategory:
21802178 emit_warning(c, stmt->getLocStart(), "TODO handle decl kind ObjCCategory");
21812179 return ErrorUnexpected;
2182 case Decl::ObjCCategoryImpl:
2180 case clang::Decl::ObjCCategoryImpl:
21832181 emit_warning(c, stmt->getLocStart(), "TODO handle decl kind ObjCCategoryImpl");
21842182 return ErrorUnexpected;
2185 case Decl::ObjCImplementation:
2183 case clang::Decl::ObjCImplementation:
21862184 emit_warning(c, stmt->getLocStart(), "TODO handle decl kind ObjCImplementation");
21872185 return ErrorUnexpected;
2188 case Decl::ObjCInterface:
2186 case clang::Decl::ObjCInterface:
21892187 emit_warning(c, stmt->getLocStart(), "TODO handle decl kind ObjCInterface");
21902188 return ErrorUnexpected;
2191 case Decl::ObjCProtocol:
2189 case clang::Decl::ObjCProtocol:
21922190 emit_warning(c, stmt->getLocStart(), "TODO handle decl kind ObjCProtocol");
21932191 return ErrorUnexpected;
2194 case Decl::ObjCMethod:
2192 case clang::Decl::ObjCMethod:
21952193 emit_warning(c, stmt->getLocStart(), "TODO handle decl kind ObjCMethod");
21962194 return ErrorUnexpected;
2197 case Decl::ObjCProperty:
2195 case clang::Decl::ObjCProperty:
21982196 emit_warning(c, stmt->getLocStart(), "TODO handle decl kind ObjCProperty");
21992197 return ErrorUnexpected;
2200 case Decl::BuiltinTemplate:
2198 case clang::Decl::BuiltinTemplate:
22012199 emit_warning(c, stmt->getLocStart(), "TODO handle decl kind BuiltinTemplate");
22022200 return ErrorUnexpected;
2203 case Decl::ClassTemplate:
2201 case clang::Decl::ClassTemplate:
22042202 emit_warning(c, stmt->getLocStart(), "TODO handle decl kind ClassTemplate");
22052203 return ErrorUnexpected;
2206 case Decl::FunctionTemplate:
2204 case clang::Decl::FunctionTemplate:
22072205 emit_warning(c, stmt->getLocStart(), "TODO handle decl kind FunctionTemplate");
22082206 return ErrorUnexpected;
2209 case Decl::TypeAliasTemplate:
2207 case clang::Decl::TypeAliasTemplate:
22102208 emit_warning(c, stmt->getLocStart(), "TODO handle decl kind TypeAliasTemplate");
22112209 return ErrorUnexpected;
2212 case Decl::VarTemplate:
2210 case clang::Decl::VarTemplate:
22132211 emit_warning(c, stmt->getLocStart(), "TODO handle decl kind VarTemplate");
22142212 return ErrorUnexpected;
2215 case Decl::TemplateTemplateParm:
2213 case clang::Decl::TemplateTemplateParm:
22162214 emit_warning(c, stmt->getLocStart(), "TODO handle decl kind TemplateTemplateParm");
22172215 return ErrorUnexpected;
2218 case Decl::Enum:
2216 case clang::Decl::Enum:
22192217 emit_warning(c, stmt->getLocStart(), "TODO handle decl kind Enum");
22202218 return ErrorUnexpected;
2221 case Decl::Record:
2219 case clang::Decl::Record:
22222220 emit_warning(c, stmt->getLocStart(), "TODO handle decl kind Record");
22232221 return ErrorUnexpected;
2224 case Decl::CXXRecord:
2222 case clang::Decl::CXXRecord:
22252223 emit_warning(c, stmt->getLocStart(), "TODO handle decl kind CXXRecord");
22262224 return ErrorUnexpected;
2227 case Decl::ClassTemplateSpecialization:
2225 case clang::Decl::ClassTemplateSpecialization:
22282226 emit_warning(c, stmt->getLocStart(), "TODO handle decl kind ClassTemplateSpecialization");
22292227 return ErrorUnexpected;
2230 case Decl::ClassTemplatePartialSpecialization:
2228 case clang::Decl::ClassTemplatePartialSpecialization:
22312229 emit_warning(c, stmt->getLocStart(), "TODO handle decl kind ClassTemplatePartialSpecialization");
22322230 return ErrorUnexpected;
2233 case Decl::TemplateTypeParm:
2231 case clang::Decl::TemplateTypeParm:
22342232 emit_warning(c, stmt->getLocStart(), "TODO handle decl kind TemplateTypeParm");
22352233 return ErrorUnexpected;
2236 case Decl::ObjCTypeParam:
2234 case clang::Decl::ObjCTypeParam:
22372235 emit_warning(c, stmt->getLocStart(), "TODO handle decl kind ObjCTypeParam");
22382236 return ErrorUnexpected;
2239 case Decl::TypeAlias:
2237 case clang::Decl::TypeAlias:
22402238 emit_warning(c, stmt->getLocStart(), "TODO handle decl kind TypeAlias");
22412239 return ErrorUnexpected;
2242 case Decl::Typedef:
2240 case clang::Decl::Typedef:
22432241 emit_warning(c, stmt->getLocStart(), "TODO handle decl kind Typedef");
22442242 return ErrorUnexpected;
2245 case Decl::UnresolvedUsingTypename:
2243 case clang::Decl::UnresolvedUsingTypename:
22462244 emit_warning(c, stmt->getLocStart(), "TODO handle decl kind UnresolvedUsingTypename");
22472245 return ErrorUnexpected;
2248 case Decl::Using:
2246 case clang::Decl::Using:
22492247 emit_warning(c, stmt->getLocStart(), "TODO handle decl kind Using");
22502248 return ErrorUnexpected;
2251 case Decl::UsingDirective:
2249 case clang::Decl::UsingDirective:
22522250 emit_warning(c, stmt->getLocStart(), "TODO handle decl kind UsingDirective");
22532251 return ErrorUnexpected;
2254 case Decl::UsingPack:
2252 case clang::Decl::UsingPack:
22552253 emit_warning(c, stmt->getLocStart(), "TODO handle decl kind UsingPack");
22562254 return ErrorUnexpected;
2257 case Decl::UsingShadow:
2255 case clang::Decl::UsingShadow:
22582256 emit_warning(c, stmt->getLocStart(), "TODO handle decl kind UsingShadow");
22592257 return ErrorUnexpected;
2260 case Decl::ConstructorUsingShadow:
2258 case clang::Decl::ConstructorUsingShadow:
22612259 emit_warning(c, stmt->getLocStart(), "TODO handle decl kind ConstructorUsingShadow");
22622260 return ErrorUnexpected;
2263 case Decl::Binding:
2261 case clang::Decl::Binding:
22642262 emit_warning(c, stmt->getLocStart(), "TODO handle decl kind Binding");
22652263 return ErrorUnexpected;
2266 case Decl::Field:
2264 case clang::Decl::Field:
22672265 emit_warning(c, stmt->getLocStart(), "TODO handle decl kind Field");
22682266 return ErrorUnexpected;
2269 case Decl::ObjCAtDefsField:
2267 case clang::Decl::ObjCAtDefsField:
22702268 emit_warning(c, stmt->getLocStart(), "TODO handle decl kind ObjCAtDefsField");
22712269 return ErrorUnexpected;
2272 case Decl::ObjCIvar:
2270 case clang::Decl::ObjCIvar:
22732271 emit_warning(c, stmt->getLocStart(), "TODO handle decl kind ObjCIvar");
22742272 return ErrorUnexpected;
2275 case Decl::Function:
2273 case clang::Decl::Function:
22762274 emit_warning(c, stmt->getLocStart(), "TODO handle decl kind Function");
22772275 return ErrorUnexpected;
2278 case Decl::CXXDeductionGuide:
2276 case clang::Decl::CXXDeductionGuide:
22792277 emit_warning(c, stmt->getLocStart(), "TODO handle decl kind CXXDeductionGuide");
22802278 return ErrorUnexpected;
2281 case Decl::CXXMethod:
2279 case clang::Decl::CXXMethod:
22822280 emit_warning(c, stmt->getLocStart(), "TODO handle decl kind CXXMethod");
22832281 return ErrorUnexpected;
2284 case Decl::CXXConstructor:
2282 case clang::Decl::CXXConstructor:
22852283 emit_warning(c, stmt->getLocStart(), "TODO handle decl kind CXXConstructor");
22862284 return ErrorUnexpected;
2287 case Decl::CXXConversion:
2285 case clang::Decl::CXXConversion:
22882286 emit_warning(c, stmt->getLocStart(), "TODO handle decl kind CXXConversion");
22892287 return ErrorUnexpected;
2290 case Decl::CXXDestructor:
2288 case clang::Decl::CXXDestructor:
22912289 emit_warning(c, stmt->getLocStart(), "TODO handle decl kind CXXDestructor");
22922290 return ErrorUnexpected;
2293 case Decl::MSProperty:
2291 case clang::Decl::MSProperty:
22942292 emit_warning(c, stmt->getLocStart(), "TODO handle decl kind MSProperty");
22952293 return ErrorUnexpected;
2296 case Decl::NonTypeTemplateParm:
2294 case clang::Decl::NonTypeTemplateParm:
22972295 emit_warning(c, stmt->getLocStart(), "TODO handle decl kind NonTypeTemplateParm");
22982296 return ErrorUnexpected;
2299 case Decl::Decomposition:
2297 case clang::Decl::Decomposition:
23002298 emit_warning(c, stmt->getLocStart(), "TODO handle decl kind Decomposition");
23012299 return ErrorUnexpected;
2302 case Decl::ImplicitParam:
2300 case clang::Decl::ImplicitParam:
23032301 emit_warning(c, stmt->getLocStart(), "TODO handle decl kind ImplicitParam");
23042302 return ErrorUnexpected;
2305 case Decl::OMPCapturedExpr:
2303 case clang::Decl::OMPCapturedExpr:
23062304 emit_warning(c, stmt->getLocStart(), "TODO handle decl kind OMPCapturedExpr");
23072305 return ErrorUnexpected;
2308 case Decl::ParmVar:
2306 case clang::Decl::ParmVar:
23092307 emit_warning(c, stmt->getLocStart(), "TODO handle decl kind ParmVar");
23102308 return ErrorUnexpected;
2311 case Decl::VarTemplateSpecialization:
2309 case clang::Decl::VarTemplateSpecialization:
23122310 emit_warning(c, stmt->getLocStart(), "TODO handle decl kind VarTemplateSpecialization");
23132311 return ErrorUnexpected;
2314 case Decl::VarTemplatePartialSpecialization:
2312 case clang::Decl::VarTemplatePartialSpecialization:
23152313 emit_warning(c, stmt->getLocStart(), "TODO handle decl kind VarTemplatePartialSpecialization");
23162314 return ErrorUnexpected;
2317 case Decl::EnumConstant:
2315 case clang::Decl::EnumConstant:
23182316 emit_warning(c, stmt->getLocStart(), "TODO handle decl kind EnumConstant");
23192317 return ErrorUnexpected;
2320 case Decl::IndirectField:
2318 case clang::Decl::IndirectField:
23212319 emit_warning(c, stmt->getLocStart(), "TODO handle decl kind IndirectField");
23222320 return ErrorUnexpected;
2323 case Decl::OMPDeclareReduction:
2321 case clang::Decl::OMPDeclareReduction:
23242322 emit_warning(c, stmt->getLocStart(), "TODO handle decl kind OMPDeclareReduction");
23252323 return ErrorUnexpected;
2326 case Decl::UnresolvedUsingValue:
2324 case clang::Decl::UnresolvedUsingValue:
23272325 emit_warning(c, stmt->getLocStart(), "TODO handle decl kind UnresolvedUsingValue");
23282326 return ErrorUnexpected;
2329 case Decl::OMPThreadPrivate:
2327 case clang::Decl::OMPThreadPrivate:
23302328 emit_warning(c, stmt->getLocStart(), "TODO handle decl kind OMPThreadPrivate");
23312329 return ErrorUnexpected;
2332 case Decl::ObjCPropertyImpl:
2330 case clang::Decl::ObjCPropertyImpl:
23332331 emit_warning(c, stmt->getLocStart(), "TODO handle decl kind ObjCPropertyImpl");
23342332 return ErrorUnexpected;
2335 case Decl::PragmaComment:
2333 case clang::Decl::PragmaComment:
23362334 emit_warning(c, stmt->getLocStart(), "TODO handle decl kind PragmaComment");
23372335 return ErrorUnexpected;
2338 case Decl::PragmaDetectMismatch:
2336 case clang::Decl::PragmaDetectMismatch:
23392337 emit_warning(c, stmt->getLocStart(), "TODO handle decl kind PragmaDetectMismatch");
23402338 return ErrorUnexpected;
2341 case Decl::StaticAssert:
2339 case clang::Decl::StaticAssert:
23422340 emit_warning(c, stmt->getLocStart(), "TODO handle decl kind StaticAssert");
23432341 return ErrorUnexpected;
2344 case Decl::TranslationUnit:
2342 case clang::Decl::TranslationUnit:
23452343 emit_warning(c, stmt->getLocStart(), "TODO handle decl kind TranslationUnit");
23462344 return ErrorUnexpected;
23472345 }
......@@ -2368,7 +2366,7 @@ static AstNode *to_enum_zero_cmp(Context *c, AstNode *expr, AstNode *enum_type)
23682366 return trans_create_node_bin_op(c, expr, BinOpTypeCmpNotEq, bitcast);
23692367}
23702368
2371static AstNode *trans_bool_expr(Context *c, ResultUsed result_used, TransScope *scope, const Expr *expr, TransLRValue lrval) {
2369static AstNode *trans_bool_expr(Context *c, ResultUsed result_used, TransScope *scope, const clang::Expr *expr, TransLRValue lrval) {
23722370 AstNode *res = trans_expr(c, result_used, scope, expr, lrval);
23732371 if (res == nullptr)
23742372 return nullptr;
......@@ -2405,133 +2403,133 @@ static AstNode *trans_bool_expr(Context *c, ResultUsed result_used, TransScope *
24052403 }
24062404
24072405
2408 const Type *ty = get_expr_qual_type_before_implicit_cast(c, expr).getTypePtr();
2406 const clang::Type *ty = get_expr_qual_type_before_implicit_cast(c, expr).getTypePtr();
24092407 auto classs = ty->getTypeClass();
24102408 switch (classs) {
2411 case Type::Builtin:
2409 case clang::Type::Builtin:
24122410 {
2413 const BuiltinType *builtin_ty = static_cast<const BuiltinType*>(ty);
2411 const clang::BuiltinType *builtin_ty = static_cast<const clang::BuiltinType*>(ty);
24142412 switch (builtin_ty->getKind()) {
2415 case BuiltinType::Bool:
2416 case BuiltinType::Char_U:
2417 case BuiltinType::UChar:
2418 case BuiltinType::Char_S:
2419 case BuiltinType::SChar:
2420 case BuiltinType::UShort:
2421 case BuiltinType::UInt:
2422 case BuiltinType::ULong:
2423 case BuiltinType::ULongLong:
2424 case BuiltinType::Short:
2425 case BuiltinType::Int:
2426 case BuiltinType::Long:
2427 case BuiltinType::LongLong:
2428 case BuiltinType::UInt128:
2429 case BuiltinType::Int128:
2430 case BuiltinType::Float:
2431 case BuiltinType::Double:
2432 case BuiltinType::Float128:
2433 case BuiltinType::LongDouble:
2434 case BuiltinType::WChar_U:
2435 case BuiltinType::Char8:
2436 case BuiltinType::Char16:
2437 case BuiltinType::Char32:
2438 case BuiltinType::WChar_S:
2439 case BuiltinType::Float16:
2413 case clang::BuiltinType::Bool:
2414 case clang::BuiltinType::Char_U:
2415 case clang::BuiltinType::UChar:
2416 case clang::BuiltinType::Char_S:
2417 case clang::BuiltinType::SChar:
2418 case clang::BuiltinType::UShort:
2419 case clang::BuiltinType::UInt:
2420 case clang::BuiltinType::ULong:
2421 case clang::BuiltinType::ULongLong:
2422 case clang::BuiltinType::Short:
2423 case clang::BuiltinType::Int:
2424 case clang::BuiltinType::Long:
2425 case clang::BuiltinType::LongLong:
2426 case clang::BuiltinType::UInt128:
2427 case clang::BuiltinType::Int128:
2428 case clang::BuiltinType::Float:
2429 case clang::BuiltinType::Double:
2430 case clang::BuiltinType::Float128:
2431 case clang::BuiltinType::LongDouble:
2432 case clang::BuiltinType::WChar_U:
2433 case clang::BuiltinType::Char8:
2434 case clang::BuiltinType::Char16:
2435 case clang::BuiltinType::Char32:
2436 case clang::BuiltinType::WChar_S:
2437 case clang::BuiltinType::Float16:
24402438 return trans_create_node_bin_op(c, res, BinOpTypeCmpNotEq, trans_create_node_unsigned_negative(c, 0, false));
2441 case BuiltinType::NullPtr:
2439 case clang::BuiltinType::NullPtr:
24422440 return trans_create_node_bin_op(c, res, BinOpTypeCmpNotEq,
24432441 trans_create_node_unsigned(c, 0));
24442442
2445 case BuiltinType::Void:
2446 case BuiltinType::Half:
2447 case BuiltinType::ObjCId:
2448 case BuiltinType::ObjCClass:
2449 case BuiltinType::ObjCSel:
2450 case BuiltinType::OMPArraySection:
2451 case BuiltinType::Dependent:
2452 case BuiltinType::Overload:
2453 case BuiltinType::BoundMember:
2454 case BuiltinType::PseudoObject:
2455 case BuiltinType::UnknownAny:
2456 case BuiltinType::BuiltinFn:
2457 case BuiltinType::ARCUnbridgedCast:
2458 case BuiltinType::OCLImage1dRO:
2459 case BuiltinType::OCLImage1dArrayRO:
2460 case BuiltinType::OCLImage1dBufferRO:
2461 case BuiltinType::OCLImage2dRO:
2462 case BuiltinType::OCLImage2dArrayRO:
2463 case BuiltinType::OCLImage2dDepthRO:
2464 case BuiltinType::OCLImage2dArrayDepthRO:
2465 case BuiltinType::OCLImage2dMSAARO:
2466 case BuiltinType::OCLImage2dArrayMSAARO:
2467 case BuiltinType::OCLImage2dMSAADepthRO:
2468 case BuiltinType::OCLImage2dArrayMSAADepthRO:
2469 case BuiltinType::OCLImage3dRO:
2470 case BuiltinType::OCLImage1dWO:
2471 case BuiltinType::OCLImage1dArrayWO:
2472 case BuiltinType::OCLImage1dBufferWO:
2473 case BuiltinType::OCLImage2dWO:
2474 case BuiltinType::OCLImage2dArrayWO:
2475 case BuiltinType::OCLImage2dDepthWO:
2476 case BuiltinType::OCLImage2dArrayDepthWO:
2477 case BuiltinType::OCLImage2dMSAAWO:
2478 case BuiltinType::OCLImage2dArrayMSAAWO:
2479 case BuiltinType::OCLImage2dMSAADepthWO:
2480 case BuiltinType::OCLImage2dArrayMSAADepthWO:
2481 case BuiltinType::OCLImage3dWO:
2482 case BuiltinType::OCLImage1dRW:
2483 case BuiltinType::OCLImage1dArrayRW:
2484 case BuiltinType::OCLImage1dBufferRW:
2485 case BuiltinType::OCLImage2dRW:
2486 case BuiltinType::OCLImage2dArrayRW:
2487 case BuiltinType::OCLImage2dDepthRW:
2488 case BuiltinType::OCLImage2dArrayDepthRW:
2489 case BuiltinType::OCLImage2dMSAARW:
2490 case BuiltinType::OCLImage2dArrayMSAARW:
2491 case BuiltinType::OCLImage2dMSAADepthRW:
2492 case BuiltinType::OCLImage2dArrayMSAADepthRW:
2493 case BuiltinType::OCLImage3dRW:
2494 case BuiltinType::OCLSampler:
2495 case BuiltinType::OCLEvent:
2496 case BuiltinType::OCLClkEvent:
2497 case BuiltinType::OCLQueue:
2498 case BuiltinType::OCLReserveID:
2499 case BuiltinType::ShortAccum:
2500 case BuiltinType::Accum:
2501 case BuiltinType::LongAccum:
2502 case BuiltinType::UShortAccum:
2503 case BuiltinType::UAccum:
2504 case BuiltinType::ULongAccum:
2505 case BuiltinType::ShortFract:
2506 case BuiltinType::Fract:
2507 case BuiltinType::LongFract:
2508 case BuiltinType::UShortFract:
2509 case BuiltinType::UFract:
2510 case BuiltinType::ULongFract:
2511 case BuiltinType::SatShortAccum:
2512 case BuiltinType::SatAccum:
2513 case BuiltinType::SatLongAccum:
2514 case BuiltinType::SatUShortAccum:
2515 case BuiltinType::SatUAccum:
2516 case BuiltinType::SatULongAccum:
2517 case BuiltinType::SatShortFract:
2518 case BuiltinType::SatFract:
2519 case BuiltinType::SatLongFract:
2520 case BuiltinType::SatUShortFract:
2521 case BuiltinType::SatUFract:
2522 case BuiltinType::SatULongFract:
2443 case clang::BuiltinType::Void:
2444 case clang::BuiltinType::Half:
2445 case clang::BuiltinType::ObjCId:
2446 case clang::BuiltinType::ObjCClass:
2447 case clang::BuiltinType::ObjCSel:
2448 case clang::BuiltinType::OMPArraySection:
2449 case clang::BuiltinType::Dependent:
2450 case clang::BuiltinType::Overload:
2451 case clang::BuiltinType::BoundMember:
2452 case clang::BuiltinType::PseudoObject:
2453 case clang::BuiltinType::UnknownAny:
2454 case clang::BuiltinType::BuiltinFn:
2455 case clang::BuiltinType::ARCUnbridgedCast:
2456 case clang::BuiltinType::OCLImage1dRO:
2457 case clang::BuiltinType::OCLImage1dArrayRO:
2458 case clang::BuiltinType::OCLImage1dBufferRO:
2459 case clang::BuiltinType::OCLImage2dRO:
2460 case clang::BuiltinType::OCLImage2dArrayRO:
2461 case clang::BuiltinType::OCLImage2dDepthRO:
2462 case clang::BuiltinType::OCLImage2dArrayDepthRO:
2463 case clang::BuiltinType::OCLImage2dMSAARO:
2464 case clang::BuiltinType::OCLImage2dArrayMSAARO:
2465 case clang::BuiltinType::OCLImage2dMSAADepthRO:
2466 case clang::BuiltinType::OCLImage2dArrayMSAADepthRO:
2467 case clang::BuiltinType::OCLImage3dRO:
2468 case clang::BuiltinType::OCLImage1dWO:
2469 case clang::BuiltinType::OCLImage1dArrayWO:
2470 case clang::BuiltinType::OCLImage1dBufferWO:
2471 case clang::BuiltinType::OCLImage2dWO:
2472 case clang::BuiltinType::OCLImage2dArrayWO:
2473 case clang::BuiltinType::OCLImage2dDepthWO:
2474 case clang::BuiltinType::OCLImage2dArrayDepthWO:
2475 case clang::BuiltinType::OCLImage2dMSAAWO:
2476 case clang::BuiltinType::OCLImage2dArrayMSAAWO:
2477 case clang::BuiltinType::OCLImage2dMSAADepthWO:
2478 case clang::BuiltinType::OCLImage2dArrayMSAADepthWO:
2479 case clang::BuiltinType::OCLImage3dWO:
2480 case clang::BuiltinType::OCLImage1dRW:
2481 case clang::BuiltinType::OCLImage1dArrayRW:
2482 case clang::BuiltinType::OCLImage1dBufferRW:
2483 case clang::BuiltinType::OCLImage2dRW:
2484 case clang::BuiltinType::OCLImage2dArrayRW:
2485 case clang::BuiltinType::OCLImage2dDepthRW:
2486 case clang::BuiltinType::OCLImage2dArrayDepthRW:
2487 case clang::BuiltinType::OCLImage2dMSAARW:
2488 case clang::BuiltinType::OCLImage2dArrayMSAARW:
2489 case clang::BuiltinType::OCLImage2dMSAADepthRW:
2490 case clang::BuiltinType::OCLImage2dArrayMSAADepthRW:
2491 case clang::BuiltinType::OCLImage3dRW:
2492 case clang::BuiltinType::OCLSampler:
2493 case clang::BuiltinType::OCLEvent:
2494 case clang::BuiltinType::OCLClkEvent:
2495 case clang::BuiltinType::OCLQueue:
2496 case clang::BuiltinType::OCLReserveID:
2497 case clang::BuiltinType::ShortAccum:
2498 case clang::BuiltinType::Accum:
2499 case clang::BuiltinType::LongAccum:
2500 case clang::BuiltinType::UShortAccum:
2501 case clang::BuiltinType::UAccum:
2502 case clang::BuiltinType::ULongAccum:
2503 case clang::BuiltinType::ShortFract:
2504 case clang::BuiltinType::Fract:
2505 case clang::BuiltinType::LongFract:
2506 case clang::BuiltinType::UShortFract:
2507 case clang::BuiltinType::UFract:
2508 case clang::BuiltinType::ULongFract:
2509 case clang::BuiltinType::SatShortAccum:
2510 case clang::BuiltinType::SatAccum:
2511 case clang::BuiltinType::SatLongAccum:
2512 case clang::BuiltinType::SatUShortAccum:
2513 case clang::BuiltinType::SatUAccum:
2514 case clang::BuiltinType::SatULongAccum:
2515 case clang::BuiltinType::SatShortFract:
2516 case clang::BuiltinType::SatFract:
2517 case clang::BuiltinType::SatLongFract:
2518 case clang::BuiltinType::SatUShortFract:
2519 case clang::BuiltinType::SatUFract:
2520 case clang::BuiltinType::SatULongFract:
25232521 return res;
25242522 }
25252523 break;
25262524 }
2527 case Type::Pointer:
2525 case clang::Type::Pointer:
25282526 return trans_create_node_bin_op(c, res, BinOpTypeCmpNotEq,
25292527 trans_create_node_unsigned(c, 0));
25302528
2531 case Type::Typedef:
2529 case clang::Type::Typedef:
25322530 {
2533 const TypedefType *typedef_ty = static_cast<const TypedefType*>(ty);
2534 const TypedefNameDecl *typedef_decl = typedef_ty->getDecl();
2531 const clang::TypedefType *typedef_ty = static_cast<const clang::TypedefType*>(ty);
2532 const clang::TypedefNameDecl *typedef_decl = typedef_ty->getDecl();
25352533 auto existing_entry = c->decl_table.maybe_get((void*)typedef_decl->getCanonicalDecl());
25362534 if (existing_entry) {
25372535 return existing_entry->value;
......@@ -2540,79 +2538,79 @@ static AstNode *trans_bool_expr(Context *c, ResultUsed result_used, TransScope *
25402538 return res;
25412539 }
25422540
2543 case Type::Enum:
2541 case clang::Type::Enum:
25442542 {
2545 const EnumType *enum_ty = static_cast<const EnumType*>(ty);
2543 const clang::EnumType *enum_ty = static_cast<const clang::EnumType*>(ty);
25462544 AstNode *enum_type = resolve_enum_decl(c, enum_ty->getDecl());
25472545 return to_enum_zero_cmp(c, res, enum_type);
25482546 }
25492547
2550 case Type::Elaborated:
2548 case clang::Type::Elaborated:
25512549 {
2552 const ElaboratedType *elaborated_ty = static_cast<const ElaboratedType*>(ty);
2550 const clang::ElaboratedType *elaborated_ty = static_cast<const clang::ElaboratedType*>(ty);
25532551 switch (elaborated_ty->getKeyword()) {
2554 case ETK_Enum: {
2552 case clang::ETK_Enum: {
25552553 AstNode *enum_type = trans_qual_type(c, elaborated_ty->getNamedType(), expr->getLocStart());
25562554 return to_enum_zero_cmp(c, res, enum_type);
25572555 }
2558 case ETK_Struct:
2559 case ETK_Union:
2560 case ETK_Interface:
2561 case ETK_Class:
2562 case ETK_Typename:
2563 case ETK_None:
2556 case clang::ETK_Struct:
2557 case clang::ETK_Union:
2558 case clang::ETK_Interface:
2559 case clang::ETK_Class:
2560 case clang::ETK_Typename:
2561 case clang::ETK_None:
25642562 return res;
25652563 }
25662564 }
25672565
2568 case Type::FunctionProto:
2569 case Type::Record:
2570 case Type::ConstantArray:
2571 case Type::Paren:
2572 case Type::Decayed:
2573 case Type::Attributed:
2574 case Type::IncompleteArray:
2575 case Type::BlockPointer:
2576 case Type::LValueReference:
2577 case Type::RValueReference:
2578 case Type::MemberPointer:
2579 case Type::VariableArray:
2580 case Type::DependentSizedArray:
2581 case Type::DependentSizedExtVector:
2582 case Type::Vector:
2583 case Type::ExtVector:
2584 case Type::FunctionNoProto:
2585 case Type::UnresolvedUsing:
2586 case Type::Adjusted:
2587 case Type::TypeOfExpr:
2588 case Type::TypeOf:
2589 case Type::Decltype:
2590 case Type::UnaryTransform:
2591 case Type::TemplateTypeParm:
2592 case Type::SubstTemplateTypeParm:
2593 case Type::SubstTemplateTypeParmPack:
2594 case Type::TemplateSpecialization:
2595 case Type::Auto:
2596 case Type::InjectedClassName:
2597 case Type::DependentName:
2598 case Type::DependentTemplateSpecialization:
2599 case Type::PackExpansion:
2600 case Type::ObjCObject:
2601 case Type::ObjCInterface:
2602 case Type::Complex:
2603 case Type::ObjCObjectPointer:
2604 case Type::Atomic:
2605 case Type::Pipe:
2606 case Type::ObjCTypeParam:
2607 case Type::DeducedTemplateSpecialization:
2608 case Type::DependentAddressSpace:
2609 case Type::DependentVector:
2566 case clang::Type::FunctionProto:
2567 case clang::Type::Record:
2568 case clang::Type::ConstantArray:
2569 case clang::Type::Paren:
2570 case clang::Type::Decayed:
2571 case clang::Type::Attributed:
2572 case clang::Type::IncompleteArray:
2573 case clang::Type::BlockPointer:
2574 case clang::Type::LValueReference:
2575 case clang::Type::RValueReference:
2576 case clang::Type::MemberPointer:
2577 case clang::Type::VariableArray:
2578 case clang::Type::DependentSizedArray:
2579 case clang::Type::DependentSizedExtVector:
2580 case clang::Type::Vector:
2581 case clang::Type::ExtVector:
2582 case clang::Type::FunctionNoProto:
2583 case clang::Type::UnresolvedUsing:
2584 case clang::Type::Adjusted:
2585 case clang::Type::TypeOfExpr:
2586 case clang::Type::TypeOf:
2587 case clang::Type::Decltype:
2588 case clang::Type::UnaryTransform:
2589 case clang::Type::TemplateTypeParm:
2590 case clang::Type::SubstTemplateTypeParm:
2591 case clang::Type::SubstTemplateTypeParmPack:
2592 case clang::Type::TemplateSpecialization:
2593 case clang::Type::Auto:
2594 case clang::Type::InjectedClassName:
2595 case clang::Type::DependentName:
2596 case clang::Type::DependentTemplateSpecialization:
2597 case clang::Type::PackExpansion:
2598 case clang::Type::ObjCObject:
2599 case clang::Type::ObjCInterface:
2600 case clang::Type::Complex:
2601 case clang::Type::ObjCObjectPointer:
2602 case clang::Type::Atomic:
2603 case clang::Type::Pipe:
2604 case clang::Type::ObjCTypeParam:
2605 case clang::Type::DeducedTemplateSpecialization:
2606 case clang::Type::DependentAddressSpace:
2607 case clang::Type::DependentVector:
26102608 return res;
26112609 }
26122610 zig_unreachable();
26132611}
26142612
2615static AstNode *trans_while_loop(Context *c, TransScope *scope, const WhileStmt *stmt) {
2613static AstNode *trans_while_loop(Context *c, TransScope *scope, const clang::WhileStmt *stmt) {
26162614 TransScopeWhile *while_scope = trans_scope_while_create(c, scope);
26172615
26182616 while_scope->node->data.while_expr.condition = trans_bool_expr(c, ResultUsedYes, scope, stmt->getCond(), TransRValue);
......@@ -2627,7 +2625,7 @@ static AstNode *trans_while_loop(Context *c, TransScope *scope, const WhileStmt
26272625 return while_scope->node;
26282626}
26292627
2630static AstNode *trans_if_statement(Context *c, TransScope *scope, const IfStmt *stmt) {
2628static AstNode *trans_if_statement(Context *c, TransScope *scope, const clang::IfStmt *stmt) {
26312629 // if (c) t
26322630 // if (c) t else e
26332631 AstNode *if_node = trans_create_node(c, NodeTypeIfBoolExpr);
......@@ -2649,7 +2647,7 @@ static AstNode *trans_if_statement(Context *c, TransScope *scope, const IfStmt *
26492647 return if_node;
26502648}
26512649
2652static AstNode *trans_call_expr(Context *c, ResultUsed result_used, TransScope *scope, const CallExpr *stmt) {
2650static AstNode *trans_call_expr(Context *c, ResultUsed result_used, TransScope *scope, const clang::CallExpr *stmt) {
26532651 AstNode *node = trans_create_node(c, NodeTypeFnCallExpr);
26542652
26552653 AstNode *callee_raw_node = trans_expr(c, ResultUsedYes, scope, stmt->getCallee(), TransRValue);
......@@ -2657,16 +2655,16 @@ static AstNode *trans_call_expr(Context *c, ResultUsed result_used, TransScope *
26572655 return nullptr;
26582656
26592657 bool is_ptr = false;
2660 const FunctionProtoType *fn_ty = qual_type_get_fn_proto(stmt->getCallee()->getType(), &is_ptr);
2658 const clang::FunctionProtoType *fn_ty = qual_type_get_fn_proto(stmt->getCallee()->getType(), &is_ptr);
26612659 AstNode *callee_node = nullptr;
26622660 if (is_ptr && fn_ty) {
2663 if (stmt->getCallee()->getStmtClass() == Stmt::ImplicitCastExprClass) {
2664 const ImplicitCastExpr *implicit_cast = static_cast<const ImplicitCastExpr *>(stmt->getCallee());
2665 if (implicit_cast->getCastKind() == CK_FunctionToPointerDecay) {
2666 if (implicit_cast->getSubExpr()->getStmtClass() == Stmt::DeclRefExprClass) {
2667 const DeclRefExpr *decl_ref = static_cast<const DeclRefExpr *>(implicit_cast->getSubExpr());
2668 const Decl *decl = decl_ref->getFoundDecl();
2669 if (decl->getKind() == Decl::Function) {
2661 if (stmt->getCallee()->getStmtClass() == clang::Stmt::ImplicitCastExprClass) {
2662 const clang::ImplicitCastExpr *implicit_cast = static_cast<const clang::ImplicitCastExpr *>(stmt->getCallee());
2663 if (implicit_cast->getCastKind() == clang::CK_FunctionToPointerDecay) {
2664 if (implicit_cast->getSubExpr()->getStmtClass() == clang::Stmt::DeclRefExprClass) {
2665 const clang::DeclRefExpr *decl_ref = static_cast<const clang::DeclRefExpr *>(implicit_cast->getSubExpr());
2666 const clang::Decl *decl = decl_ref->getFoundDecl();
2667 if (decl->getKind() == clang::Decl::Function) {
26702668 callee_node = callee_raw_node;
26712669 }
26722670 }
......@@ -2682,7 +2680,7 @@ static AstNode *trans_call_expr(Context *c, ResultUsed result_used, TransScope *
26822680 node->data.fn_call_expr.fn_ref_expr = callee_node;
26832681
26842682 unsigned num_args = stmt->getNumArgs();
2685 const Expr * const* args = stmt->getArgs();
2683 const clang::Expr * const* args = stmt->getArgs();
26862684 for (unsigned i = 0; i < num_args; i += 1) {
26872685 AstNode *arg_node = trans_expr(c, ResultUsedYes, scope, args[i], TransRValue);
26882686 if (arg_node == nullptr)
......@@ -2698,7 +2696,7 @@ static AstNode *trans_call_expr(Context *c, ResultUsed result_used, TransScope *
26982696 return node;
26992697}
27002698
2701static AstNode *trans_member_expr(Context *c, TransScope *scope, const MemberExpr *stmt) {
2699static AstNode *trans_member_expr(Context *c, TransScope *scope, const clang::MemberExpr *stmt) {
27022700 AstNode *container_node = trans_expr(c, ResultUsedYes, scope, stmt->getBase(), TransRValue);
27032701 if (container_node == nullptr)
27042702 return nullptr;
......@@ -2713,7 +2711,7 @@ static AstNode *trans_member_expr(Context *c, TransScope *scope, const MemberExp
27132711 return node;
27142712}
27152713
2716static AstNode *trans_array_subscript_expr(Context *c, TransScope *scope, const ArraySubscriptExpr *stmt) {
2714static AstNode *trans_array_subscript_expr(Context *c, TransScope *scope, const clang::ArraySubscriptExpr *stmt) {
27172715 AstNode *container_node = trans_expr(c, ResultUsedYes, scope, stmt->getBase(), TransRValue);
27182716 if (container_node == nullptr)
27192717 return nullptr;
......@@ -2730,7 +2728,7 @@ static AstNode *trans_array_subscript_expr(Context *c, TransScope *scope, const
27302728}
27312729
27322730static AstNode *trans_c_style_cast_expr(Context *c, ResultUsed result_used, TransScope *scope,
2733 const CStyleCastExpr *stmt, TransLRValue lrvalue)
2731 const clang::CStyleCastExpr *stmt, TransLRValue lrvalue)
27342732{
27352733 AstNode *sub_expr_node = trans_expr(c, result_used, scope, stmt->getSubExpr(), lrvalue);
27362734 if (sub_expr_node == nullptr)
......@@ -2740,7 +2738,7 @@ static AstNode *trans_c_style_cast_expr(Context *c, ResultUsed result_used, Tran
27402738}
27412739
27422740static AstNode *trans_unary_expr_or_type_trait_expr(Context *c, TransScope *scope,
2743 const UnaryExprOrTypeTraitExpr *stmt)
2741 const clang::UnaryExprOrTypeTraitExpr *stmt)
27442742{
27452743 AstNode *type_node = trans_qual_type(c, stmt->getTypeOfArgument(), stmt->getLocStart());
27462744 if (type_node == nullptr)
......@@ -2751,14 +2749,14 @@ static AstNode *trans_unary_expr_or_type_trait_expr(Context *c, TransScope *scop
27512749 return node;
27522750}
27532751
2754static AstNode *trans_do_loop(Context *c, TransScope *parent_scope, const DoStmt *stmt) {
2752static AstNode *trans_do_loop(Context *c, TransScope *parent_scope, const clang::DoStmt *stmt) {
27552753 TransScopeWhile *while_scope = trans_scope_while_create(c, parent_scope);
27562754
27572755 while_scope->node->data.while_expr.condition = trans_create_node_bool(c, true);
27582756
27592757 AstNode *body_node;
27602758 TransScope *child_scope;
2761 if (stmt->getBody()->getStmtClass() == Stmt::CompoundStmtClass) {
2759 if (stmt->getBody()->getStmtClass() == clang::Stmt::CompoundStmtClass) {
27622760 // there's already a block in C, so we'll append our condition to it.
27632761 // c: do {
27642762 // c: a;
......@@ -2811,11 +2809,11 @@ static AstNode *trans_do_loop(Context *c, TransScope *parent_scope, const DoStmt
28112809 return while_scope->node;
28122810}
28132811
2814static AstNode *trans_for_loop(Context *c, TransScope *parent_scope, const ForStmt *stmt) {
2812static AstNode *trans_for_loop(Context *c, TransScope *parent_scope, const clang::ForStmt *stmt) {
28152813 AstNode *loop_block_node;
28162814 TransScopeWhile *while_scope;
28172815 TransScope *cond_scope;
2818 const Stmt *init_stmt = stmt->getInit();
2816 const clang::Stmt *init_stmt = stmt->getInit();
28192817 if (init_stmt == nullptr) {
28202818 while_scope = trans_scope_while_create(c, parent_scope);
28212819 loop_block_node = while_scope->node;
......@@ -2836,12 +2834,12 @@ static AstNode *trans_for_loop(Context *c, TransScope *parent_scope, const ForSt
28362834 child_scope->node->data.block.statements.append(while_scope->node);
28372835 }
28382836
2839 const Stmt *cond_stmt = stmt->getCond();
2837 const clang::Stmt *cond_stmt = stmt->getCond();
28402838 if (cond_stmt == nullptr) {
28412839 while_scope->node->data.while_expr.condition = trans_create_node_bool(c, true);
28422840 } else {
2843 if (Expr::classof(cond_stmt)) {
2844 const Expr *cond_expr = static_cast<const Expr*>(cond_stmt);
2841 if (clang::Expr::classof(cond_stmt)) {
2842 const clang::Expr *cond_expr = static_cast<const clang::Expr*>(cond_stmt);
28452843 while_scope->node->data.while_expr.condition = trans_bool_expr(c, ResultUsedYes, cond_scope, cond_expr, TransRValue);
28462844
28472845 if (while_scope->node->data.while_expr.condition == nullptr)
......@@ -2854,7 +2852,7 @@ static AstNode *trans_for_loop(Context *c, TransScope *parent_scope, const ForSt
28542852 }
28552853 }
28562854
2857 const Stmt *inc_stmt = stmt->getInc();
2855 const clang::Stmt *inc_stmt = stmt->getInc();
28582856 if (inc_stmt != nullptr) {
28592857 AstNode *inc_node;
28602858 TransScope *inc_scope = trans_stmt(c, cond_scope, inc_stmt, &inc_node);
......@@ -2877,12 +2875,12 @@ static AstNode *trans_for_loop(Context *c, TransScope *parent_scope, const ForSt
28772875 return loop_block_node;
28782876}
28792877
2880static AstNode *trans_switch_stmt(Context *c, TransScope *parent_scope, const SwitchStmt *stmt) {
2878static AstNode *trans_switch_stmt(Context *c, TransScope *parent_scope, const clang::SwitchStmt *stmt) {
28812879 TransScopeBlock *block_scope = trans_scope_block_create(c, parent_scope);
28822880
28832881 TransScopeSwitch *switch_scope;
28842882
2885 const DeclStmt *var_decl_stmt = stmt->getConditionVariableDeclStmt();
2883 const clang::DeclStmt *var_decl_stmt = stmt->getConditionVariableDeclStmt();
28862884 if (var_decl_stmt == nullptr) {
28872885 switch_scope = trans_scope_switch_create(c, &block_scope->base);
28882886 } else {
......@@ -2901,7 +2899,7 @@ static AstNode *trans_switch_stmt(Context *c, TransScope *parent_scope, const Sw
29012899 switch_scope->end_label_name = end_label_name;
29022900 block_scope->node->data.block.name = end_label_name;
29032901
2904 const Expr *cond_expr = stmt->getCond();
2902 const clang::Expr *cond_expr = stmt->getCond();
29052903 assert(cond_expr != nullptr);
29062904
29072905 AstNode *expr_node = trans_expr(c, ResultUsedYes, &block_scope->base, cond_expr, TransRValue);
......@@ -2910,9 +2908,9 @@ static AstNode *trans_switch_stmt(Context *c, TransScope *parent_scope, const Sw
29102908 switch_scope->switch_node->data.switch_expr.expr = expr_node;
29112909
29122910 AstNode *body_node;
2913 const Stmt *body_stmt = stmt->getBody();
2914 if (body_stmt->getStmtClass() == Stmt::CompoundStmtClass) {
2915 if (trans_compound_stmt_inline(c, &switch_scope->base, (const CompoundStmt *)body_stmt,
2911 const clang::Stmt *body_stmt = stmt->getBody();
2912 if (body_stmt->getStmtClass() == clang::Stmt::CompoundStmtClass) {
2913 if (trans_compound_stmt_inline(c, &switch_scope->base, (const clang::CompoundStmt *)body_stmt,
29162914 block_scope->node, nullptr))
29172915 {
29182916 return nullptr;
......@@ -2944,7 +2942,7 @@ static TransScopeSwitch *trans_scope_switch_find(TransScope *scope) {
29442942 return nullptr;
29452943}
29462944
2947static int trans_switch_case(Context *c, TransScope *parent_scope, const CaseStmt *stmt, AstNode **out_node,
2945static int trans_switch_case(Context *c, TransScope *parent_scope, const clang::CaseStmt *stmt, AstNode **out_node,
29482946 TransScope **out_scope) {
29492947 *out_node = nullptr;
29502948
......@@ -2989,7 +2987,7 @@ static int trans_switch_case(Context *c, TransScope *parent_scope, const CaseStm
29892987 return ErrorNone;
29902988}
29912989
2992static int trans_switch_default(Context *c, TransScope *parent_scope, const DefaultStmt *stmt, AstNode **out_node,
2990static int trans_switch_default(Context *c, TransScope *parent_scope, const clang::DefaultStmt *stmt, AstNode **out_node,
29932991 TransScope **out_scope)
29942992{
29952993 *out_node = nullptr;
......@@ -3026,25 +3024,25 @@ static int trans_switch_default(Context *c, TransScope *parent_scope, const Defa
30263024 return ErrorNone;
30273025}
30283026
3029static AstNode *trans_string_literal(Context *c, TransScope *scope, const StringLiteral *stmt) {
3027static AstNode *trans_string_literal(Context *c, TransScope *scope, const clang::StringLiteral *stmt) {
30303028 switch (stmt->getKind()) {
3031 case StringLiteral::Ascii:
3032 case StringLiteral::UTF8:
3029 case clang::StringLiteral::Ascii:
3030 case clang::StringLiteral::UTF8:
30333031 return trans_create_node_str_lit_c(c, string_ref_to_buf(stmt->getString()));
3034 case StringLiteral::UTF16:
3032 case clang::StringLiteral::UTF16:
30353033 emit_warning(c, stmt->getLocStart(), "TODO support UTF16 string literals");
30363034 return nullptr;
3037 case StringLiteral::UTF32:
3035 case clang::StringLiteral::UTF32:
30383036 emit_warning(c, stmt->getLocStart(), "TODO support UTF32 string literals");
30393037 return nullptr;
3040 case StringLiteral::Wide:
3038 case clang::StringLiteral::Wide:
30413039 emit_warning(c, stmt->getLocStart(), "TODO support wide string literals");
30423040 return nullptr;
30433041 }
30443042 zig_unreachable();
30453043}
30463044
3047static AstNode *trans_break_stmt(Context *c, TransScope *scope, const BreakStmt *stmt) {
3045static AstNode *trans_break_stmt(Context *c, TransScope *scope, const clang::BreakStmt *stmt) {
30483046 TransScope *cur_scope = scope;
30493047 while (cur_scope != nullptr) {
30503048 if (cur_scope->id == TransScopeIdWhile) {
......@@ -3058,7 +3056,7 @@ static AstNode *trans_break_stmt(Context *c, TransScope *scope, const BreakStmt
30583056 zig_unreachable();
30593057}
30603058
3061static AstNode *trans_continue_stmt(Context *c, TransScope *scope, const ContinueStmt *stmt) {
3059static AstNode *trans_continue_stmt(Context *c, TransScope *scope, const clang::ContinueStmt *stmt) {
30623060 return trans_create_node(c, NodeTypeContinue);
30633061}
30643062
......@@ -3071,47 +3069,47 @@ static int wrap_stmt(AstNode **out_node, TransScope **out_scope, TransScope *in_
30713069 return ErrorNone;
30723070}
30733071
3074static int trans_stmt_extra(Context *c, TransScope *scope, const Stmt *stmt,
3072static int trans_stmt_extra(Context *c, TransScope *scope, const clang::Stmt *stmt,
30753073 ResultUsed result_used, TransLRValue lrvalue,
30763074 AstNode **out_node, TransScope **out_child_scope,
30773075 TransScope **out_node_scope)
30783076{
3079 Stmt::StmtClass sc = stmt->getStmtClass();
3077 clang::Stmt::StmtClass sc = stmt->getStmtClass();
30803078 switch (sc) {
3081 case Stmt::ReturnStmtClass:
3079 case clang::Stmt::ReturnStmtClass:
30823080 return wrap_stmt(out_node, out_child_scope, scope,
3083 trans_return_stmt(c, scope, (const ReturnStmt *)stmt));
3084 case Stmt::CompoundStmtClass:
3081 trans_return_stmt(c, scope, (const clang::ReturnStmt *)stmt));
3082 case clang::Stmt::CompoundStmtClass:
30853083 return wrap_stmt(out_node, out_child_scope, scope,
3086 trans_compound_stmt(c, scope, (const CompoundStmt *)stmt, out_node_scope));
3087 case Stmt::IntegerLiteralClass:
3084 trans_compound_stmt(c, scope, (const clang::CompoundStmt *)stmt, out_node_scope));
3085 case clang::Stmt::IntegerLiteralClass:
30883086 return wrap_stmt(out_node, out_child_scope, scope,
3089 trans_integer_literal(c, (const IntegerLiteral *)stmt));
3090 case Stmt::ConditionalOperatorClass:
3087 trans_integer_literal(c, (const clang::IntegerLiteral *)stmt));
3088 case clang::Stmt::ConditionalOperatorClass:
30913089 return wrap_stmt(out_node, out_child_scope, scope,
3092 trans_conditional_operator(c, result_used, scope, (const ConditionalOperator *)stmt));
3093 case Stmt::BinaryOperatorClass:
3090 trans_conditional_operator(c, result_used, scope, (const clang::ConditionalOperator *)stmt));
3091 case clang::Stmt::BinaryOperatorClass:
30943092 return wrap_stmt(out_node, out_child_scope, scope,
3095 trans_binary_operator(c, result_used, scope, (const BinaryOperator *)stmt));
3096 case Stmt::CompoundAssignOperatorClass:
3093 trans_binary_operator(c, result_used, scope, (const clang::BinaryOperator *)stmt));
3094 case clang::Stmt::CompoundAssignOperatorClass:
30973095 return wrap_stmt(out_node, out_child_scope, scope,
3098 trans_compound_assign_operator(c, result_used, scope, (const CompoundAssignOperator *)stmt));
3099 case Stmt::ImplicitCastExprClass:
3096 trans_compound_assign_operator(c, result_used, scope, (const clang::CompoundAssignOperator *)stmt));
3097 case clang::Stmt::ImplicitCastExprClass:
31003098 return wrap_stmt(out_node, out_child_scope, scope,
3101 trans_implicit_cast_expr(c, scope, (const ImplicitCastExpr *)stmt));
3102 case Stmt::DeclRefExprClass:
3099 trans_implicit_cast_expr(c, scope, (const clang::ImplicitCastExpr *)stmt));
3100 case clang::Stmt::DeclRefExprClass:
31033101 return wrap_stmt(out_node, out_child_scope, scope,
3104 trans_decl_ref_expr(c, scope, (const DeclRefExpr *)stmt, lrvalue));
3105 case Stmt::UnaryOperatorClass:
3102 trans_decl_ref_expr(c, scope, (const clang::DeclRefExpr *)stmt, lrvalue));
3103 case clang::Stmt::UnaryOperatorClass:
31063104 return wrap_stmt(out_node, out_child_scope, scope,
3107 trans_unary_operator(c, result_used, scope, (const UnaryOperator *)stmt));
3108 case Stmt::DeclStmtClass:
3109 return trans_local_declaration(c, scope, (const DeclStmt *)stmt, out_node, out_child_scope);
3110 case Stmt::DoStmtClass:
3111 case Stmt::WhileStmtClass: {
3112 AstNode *while_node = sc == Stmt::DoStmtClass
3113 ? trans_do_loop(c, scope, (const DoStmt *)stmt)
3114 : trans_while_loop(c, scope, (const WhileStmt *)stmt);
3105 trans_unary_operator(c, result_used, scope, (const clang::UnaryOperator *)stmt));
3106 case clang::Stmt::DeclStmtClass:
3107 return trans_local_declaration(c, scope, (const clang::DeclStmt *)stmt, out_node, out_child_scope);
3108 case clang::Stmt::DoStmtClass:
3109 case clang::Stmt::WhileStmtClass: {
3110 AstNode *while_node = sc == clang::Stmt::DoStmtClass
3111 ? trans_do_loop(c, scope, (const clang::DoStmt *)stmt)
3112 : trans_while_loop(c, scope, (const clang::WhileStmt *)stmt);
31153113
31163114 if (while_node == nullptr)
31173115 return ErrorUnexpected;
......@@ -3122,556 +3120,556 @@ static int trans_stmt_extra(Context *c, TransScope *scope, const Stmt *stmt,
31223120
31233121 return wrap_stmt(out_node, out_child_scope, scope, while_node);
31243122 }
3125 case Stmt::IfStmtClass:
3123 case clang::Stmt::IfStmtClass:
31263124 return wrap_stmt(out_node, out_child_scope, scope,
3127 trans_if_statement(c, scope, (const IfStmt *)stmt));
3128 case Stmt::CallExprClass:
3125 trans_if_statement(c, scope, (const clang::IfStmt *)stmt));
3126 case clang::Stmt::CallExprClass:
31293127 return wrap_stmt(out_node, out_child_scope, scope,
3130 trans_call_expr(c, result_used, scope, (const CallExpr *)stmt));
3131 case Stmt::NullStmtClass:
3128 trans_call_expr(c, result_used, scope, (const clang::CallExpr *)stmt));
3129 case clang::Stmt::NullStmtClass:
31323130 *out_node = nullptr;
31333131 *out_child_scope = scope;
31343132 return ErrorNone;
3135 case Stmt::MemberExprClass:
3133 case clang::Stmt::MemberExprClass:
31363134 return wrap_stmt(out_node, out_child_scope, scope,
3137 trans_member_expr(c, scope, (const MemberExpr *)stmt));
3138 case Stmt::ArraySubscriptExprClass:
3135 trans_member_expr(c, scope, (const clang::MemberExpr *)stmt));
3136 case clang::Stmt::ArraySubscriptExprClass:
31393137 return wrap_stmt(out_node, out_child_scope, scope,
3140 trans_array_subscript_expr(c, scope, (const ArraySubscriptExpr *)stmt));
3141 case Stmt::CStyleCastExprClass:
3138 trans_array_subscript_expr(c, scope, (const clang::ArraySubscriptExpr *)stmt));
3139 case clang::Stmt::CStyleCastExprClass:
31423140 return wrap_stmt(out_node, out_child_scope, scope,
3143 trans_c_style_cast_expr(c, result_used, scope, (const CStyleCastExpr *)stmt, lrvalue));
3144 case Stmt::UnaryExprOrTypeTraitExprClass:
3141 trans_c_style_cast_expr(c, result_used, scope, (const clang::CStyleCastExpr *)stmt, lrvalue));
3142 case clang::Stmt::UnaryExprOrTypeTraitExprClass:
31453143 return wrap_stmt(out_node, out_child_scope, scope,
3146 trans_unary_expr_or_type_trait_expr(c, scope, (const UnaryExprOrTypeTraitExpr *)stmt));
3147 case Stmt::ForStmtClass: {
3148 AstNode *node = trans_for_loop(c, scope, (const ForStmt *)stmt);
3144 trans_unary_expr_or_type_trait_expr(c, scope, (const clang::UnaryExprOrTypeTraitExpr *)stmt));
3145 case clang::Stmt::ForStmtClass: {
3146 AstNode *node = trans_for_loop(c, scope, (const clang::ForStmt *)stmt);
31493147 return wrap_stmt(out_node, out_child_scope, scope, node);
31503148 }
3151 case Stmt::StringLiteralClass:
3149 case clang::Stmt::StringLiteralClass:
31523150 return wrap_stmt(out_node, out_child_scope, scope,
3153 trans_string_literal(c, scope, (const StringLiteral *)stmt));
3154 case Stmt::BreakStmtClass:
3151 trans_string_literal(c, scope, (const clang::StringLiteral *)stmt));
3152 case clang::Stmt::BreakStmtClass:
31553153 return wrap_stmt(out_node, out_child_scope, scope,
3156 trans_break_stmt(c, scope, (const BreakStmt *)stmt));
3157 case Stmt::ContinueStmtClass:
3154 trans_break_stmt(c, scope, (const clang::BreakStmt *)stmt));
3155 case clang::Stmt::ContinueStmtClass:
31583156 return wrap_stmt(out_node, out_child_scope, scope,
3159 trans_continue_stmt(c, scope, (const ContinueStmt *)stmt));
3160 case Stmt::ParenExprClass:
3157 trans_continue_stmt(c, scope, (const clang::ContinueStmt *)stmt));
3158 case clang::Stmt::ParenExprClass:
31613159 return wrap_stmt(out_node, out_child_scope, scope,
3162 trans_expr(c, result_used, scope, ((const ParenExpr*)stmt)->getSubExpr(), lrvalue));
3163 case Stmt::SwitchStmtClass:
3160 trans_expr(c, result_used, scope, ((const clang::ParenExpr*)stmt)->getSubExpr(), lrvalue));
3161 case clang::Stmt::SwitchStmtClass:
31643162 return wrap_stmt(out_node, out_child_scope, scope,
3165 trans_switch_stmt(c, scope, (const SwitchStmt *)stmt));
3166 case Stmt::CaseStmtClass:
3167 return trans_switch_case(c, scope, (const CaseStmt *)stmt, out_node, out_child_scope);
3168 case Stmt::DefaultStmtClass:
3169 return trans_switch_default(c, scope, (const DefaultStmt *)stmt, out_node, out_child_scope);
3170 case Stmt::NoStmtClass:
3163 trans_switch_stmt(c, scope, (const clang::SwitchStmt *)stmt));
3164 case clang::Stmt::CaseStmtClass:
3165 return trans_switch_case(c, scope, (const clang::CaseStmt *)stmt, out_node, out_child_scope);
3166 case clang::Stmt::DefaultStmtClass:
3167 return trans_switch_default(c, scope, (const clang::DefaultStmt *)stmt, out_node, out_child_scope);
3168 case clang::Stmt::NoStmtClass:
31713169 emit_warning(c, stmt->getLocStart(), "TODO handle C NoStmtClass");
31723170 return ErrorUnexpected;
3173 case Stmt::GCCAsmStmtClass:
3171 case clang::Stmt::GCCAsmStmtClass:
31743172 emit_warning(c, stmt->getLocStart(), "TODO handle C GCCAsmStmtClass");
31753173 return ErrorUnexpected;
3176 case Stmt::MSAsmStmtClass:
3174 case clang::Stmt::MSAsmStmtClass:
31773175 emit_warning(c, stmt->getLocStart(), "TODO handle C MSAsmStmtClass");
31783176 return ErrorUnexpected;
3179 case Stmt::AttributedStmtClass:
3177 case clang::Stmt::AttributedStmtClass:
31803178 emit_warning(c, stmt->getLocStart(), "TODO handle C AttributedStmtClass");
31813179 return ErrorUnexpected;
3182 case Stmt::CXXCatchStmtClass:
3180 case clang::Stmt::CXXCatchStmtClass:
31833181 emit_warning(c, stmt->getLocStart(), "TODO handle C CXXCatchStmtClass");
31843182 return ErrorUnexpected;
3185 case Stmt::CXXForRangeStmtClass:
3183 case clang::Stmt::CXXForRangeStmtClass:
31863184 emit_warning(c, stmt->getLocStart(), "TODO handle C CXXForRangeStmtClass");
31873185 return ErrorUnexpected;
3188 case Stmt::CXXTryStmtClass:
3186 case clang::Stmt::CXXTryStmtClass:
31893187 emit_warning(c, stmt->getLocStart(), "TODO handle C CXXTryStmtClass");
31903188 return ErrorUnexpected;
3191 case Stmt::CapturedStmtClass:
3189 case clang::Stmt::CapturedStmtClass:
31923190 emit_warning(c, stmt->getLocStart(), "TODO handle C CapturedStmtClass");
31933191 return ErrorUnexpected;
3194 case Stmt::CoreturnStmtClass:
3192 case clang::Stmt::CoreturnStmtClass:
31953193 emit_warning(c, stmt->getLocStart(), "TODO handle C CoreturnStmtClass");
31963194 return ErrorUnexpected;
3197 case Stmt::CoroutineBodyStmtClass:
3195 case clang::Stmt::CoroutineBodyStmtClass:
31983196 emit_warning(c, stmt->getLocStart(), "TODO handle C CoroutineBodyStmtClass");
31993197 return ErrorUnexpected;
3200 case Stmt::BinaryConditionalOperatorClass:
3198 case clang::Stmt::BinaryConditionalOperatorClass:
32013199 emit_warning(c, stmt->getLocStart(), "TODO handle C BinaryConditionalOperatorClass");
32023200 return ErrorUnexpected;
3203 case Stmt::AddrLabelExprClass:
3201 case clang::Stmt::AddrLabelExprClass:
32043202 emit_warning(c, stmt->getLocStart(), "TODO handle C AddrLabelExprClass");
32053203 return ErrorUnexpected;
3206 case Stmt::ArrayInitIndexExprClass:
3204 case clang::Stmt::ArrayInitIndexExprClass:
32073205 emit_warning(c, stmt->getLocStart(), "TODO handle C ArrayInitIndexExprClass");
32083206 return ErrorUnexpected;
3209 case Stmt::ArrayInitLoopExprClass:
3207 case clang::Stmt::ArrayInitLoopExprClass:
32103208 emit_warning(c, stmt->getLocStart(), "TODO handle C ArrayInitLoopExprClass");
32113209 return ErrorUnexpected;
3212 case Stmt::ArrayTypeTraitExprClass:
3210 case clang::Stmt::ArrayTypeTraitExprClass:
32133211 emit_warning(c, stmt->getLocStart(), "TODO handle C ArrayTypeTraitExprClass");
32143212 return ErrorUnexpected;
3215 case Stmt::AsTypeExprClass:
3213 case clang::Stmt::AsTypeExprClass:
32163214 emit_warning(c, stmt->getLocStart(), "TODO handle C AsTypeExprClass");
32173215 return ErrorUnexpected;
3218 case Stmt::AtomicExprClass:
3216 case clang::Stmt::AtomicExprClass:
32193217 emit_warning(c, stmt->getLocStart(), "TODO handle C AtomicExprClass");
32203218 return ErrorUnexpected;
3221 case Stmt::BlockExprClass:
3219 case clang::Stmt::BlockExprClass:
32223220 emit_warning(c, stmt->getLocStart(), "TODO handle C BlockExprClass");
32233221 return ErrorUnexpected;
3224 case Stmt::CXXBindTemporaryExprClass:
3222 case clang::Stmt::CXXBindTemporaryExprClass:
32253223 emit_warning(c, stmt->getLocStart(), "TODO handle C CXXBindTemporaryExprClass");
32263224 return ErrorUnexpected;
3227 case Stmt::CXXBoolLiteralExprClass:
3225 case clang::Stmt::CXXBoolLiteralExprClass:
32283226 emit_warning(c, stmt->getLocStart(), "TODO handle C CXXBoolLiteralExprClass");
32293227 return ErrorUnexpected;
3230 case Stmt::CXXConstructExprClass:
3228 case clang::Stmt::CXXConstructExprClass:
32313229 emit_warning(c, stmt->getLocStart(), "TODO handle C CXXConstructExprClass");
32323230 return ErrorUnexpected;
3233 case Stmt::CXXTemporaryObjectExprClass:
3231 case clang::Stmt::CXXTemporaryObjectExprClass:
32343232 emit_warning(c, stmt->getLocStart(), "TODO handle C CXXTemporaryObjectExprClass");
32353233 return ErrorUnexpected;
3236 case Stmt::CXXDefaultArgExprClass:
3234 case clang::Stmt::CXXDefaultArgExprClass:
32373235 emit_warning(c, stmt->getLocStart(), "TODO handle C CXXDefaultArgExprClass");
32383236 return ErrorUnexpected;
3239 case Stmt::CXXDefaultInitExprClass:
3237 case clang::Stmt::CXXDefaultInitExprClass:
32403238 emit_warning(c, stmt->getLocStart(), "TODO handle C CXXDefaultInitExprClass");
32413239 return ErrorUnexpected;
3242 case Stmt::CXXDeleteExprClass:
3240 case clang::Stmt::CXXDeleteExprClass:
32433241 emit_warning(c, stmt->getLocStart(), "TODO handle C CXXDeleteExprClass");
32443242 return ErrorUnexpected;
3245 case Stmt::CXXDependentScopeMemberExprClass:
3243 case clang::Stmt::CXXDependentScopeMemberExprClass:
32463244 emit_warning(c, stmt->getLocStart(), "TODO handle C CXXDependentScopeMemberExprClass");
32473245 return ErrorUnexpected;
3248 case Stmt::CXXFoldExprClass:
3246 case clang::Stmt::CXXFoldExprClass:
32493247 emit_warning(c, stmt->getLocStart(), "TODO handle C CXXFoldExprClass");
32503248 return ErrorUnexpected;
3251 case Stmt::CXXInheritedCtorInitExprClass:
3249 case clang::Stmt::CXXInheritedCtorInitExprClass:
32523250 emit_warning(c, stmt->getLocStart(), "TODO handle C CXXInheritedCtorInitExprClass");
32533251 return ErrorUnexpected;
3254 case Stmt::CXXNewExprClass:
3252 case clang::Stmt::CXXNewExprClass:
32553253 emit_warning(c, stmt->getLocStart(), "TODO handle C CXXNewExprClass");
32563254 return ErrorUnexpected;
3257 case Stmt::CXXNoexceptExprClass:
3255 case clang::Stmt::CXXNoexceptExprClass:
32583256 emit_warning(c, stmt->getLocStart(), "TODO handle C CXXNoexceptExprClass");
32593257 return ErrorUnexpected;
3260 case Stmt::CXXNullPtrLiteralExprClass:
3258 case clang::Stmt::CXXNullPtrLiteralExprClass:
32613259 emit_warning(c, stmt->getLocStart(), "TODO handle C CXXNullPtrLiteralExprClass");
32623260 return ErrorUnexpected;
3263 case Stmt::CXXPseudoDestructorExprClass:
3261 case clang::Stmt::CXXPseudoDestructorExprClass:
32643262 emit_warning(c, stmt->getLocStart(), "TODO handle C CXXPseudoDestructorExprClass");
32653263 return ErrorUnexpected;
3266 case Stmt::CXXScalarValueInitExprClass:
3264 case clang::Stmt::CXXScalarValueInitExprClass:
32673265 emit_warning(c, stmt->getLocStart(), "TODO handle C CXXScalarValueInitExprClass");
32683266 return ErrorUnexpected;
3269 case Stmt::CXXStdInitializerListExprClass:
3267 case clang::Stmt::CXXStdInitializerListExprClass:
32703268 emit_warning(c, stmt->getLocStart(), "TODO handle C CXXStdInitializerListExprClass");
32713269 return ErrorUnexpected;
3272 case Stmt::CXXThisExprClass:
3270 case clang::Stmt::CXXThisExprClass:
32733271 emit_warning(c, stmt->getLocStart(), "TODO handle C CXXThisExprClass");
32743272 return ErrorUnexpected;
3275 case Stmt::CXXThrowExprClass:
3273 case clang::Stmt::CXXThrowExprClass:
32763274 emit_warning(c, stmt->getLocStart(), "TODO handle C CXXThrowExprClass");
32773275 return ErrorUnexpected;
3278 case Stmt::CXXTypeidExprClass:
3276 case clang::Stmt::CXXTypeidExprClass:
32793277 emit_warning(c, stmt->getLocStart(), "TODO handle C CXXTypeidExprClass");
32803278 return ErrorUnexpected;
3281 case Stmt::CXXUnresolvedConstructExprClass:
3279 case clang::Stmt::CXXUnresolvedConstructExprClass:
32823280 emit_warning(c, stmt->getLocStart(), "TODO handle C CXXUnresolvedConstructExprClass");
32833281 return ErrorUnexpected;
3284 case Stmt::CXXUuidofExprClass:
3282 case clang::Stmt::CXXUuidofExprClass:
32853283 emit_warning(c, stmt->getLocStart(), "TODO handle C CXXUuidofExprClass");
32863284 return ErrorUnexpected;
3287 case Stmt::CUDAKernelCallExprClass:
3285 case clang::Stmt::CUDAKernelCallExprClass:
32883286 emit_warning(c, stmt->getLocStart(), "TODO handle C CUDAKernelCallExprClass");
32893287 return ErrorUnexpected;
3290 case Stmt::CXXMemberCallExprClass:
3288 case clang::Stmt::CXXMemberCallExprClass:
32913289 emit_warning(c, stmt->getLocStart(), "TODO handle C CXXMemberCallExprClass");
32923290 return ErrorUnexpected;
3293 case Stmt::CXXOperatorCallExprClass:
3291 case clang::Stmt::CXXOperatorCallExprClass:
32943292 emit_warning(c, stmt->getLocStart(), "TODO handle C CXXOperatorCallExprClass");
32953293 return ErrorUnexpected;
3296 case Stmt::UserDefinedLiteralClass:
3294 case clang::Stmt::UserDefinedLiteralClass:
32973295 emit_warning(c, stmt->getLocStart(), "TODO handle C UserDefinedLiteralClass");
32983296 return ErrorUnexpected;
3299 case Stmt::CXXFunctionalCastExprClass:
3297 case clang::Stmt::CXXFunctionalCastExprClass:
33003298 emit_warning(c, stmt->getLocStart(), "TODO handle C CXXFunctionalCastExprClass");
33013299 return ErrorUnexpected;
3302 case Stmt::CXXConstCastExprClass:
3300 case clang::Stmt::CXXConstCastExprClass:
33033301 emit_warning(c, stmt->getLocStart(), "TODO handle C CXXConstCastExprClass");
33043302 return ErrorUnexpected;
3305 case Stmt::CXXDynamicCastExprClass:
3303 case clang::Stmt::CXXDynamicCastExprClass:
33063304 emit_warning(c, stmt->getLocStart(), "TODO handle C CXXDynamicCastExprClass");
33073305 return ErrorUnexpected;
3308 case Stmt::CXXReinterpretCastExprClass:
3306 case clang::Stmt::CXXReinterpretCastExprClass:
33093307 emit_warning(c, stmt->getLocStart(), "TODO handle C CXXReinterpretCastExprClass");
33103308 return ErrorUnexpected;
3311 case Stmt::CXXStaticCastExprClass:
3309 case clang::Stmt::CXXStaticCastExprClass:
33123310 emit_warning(c, stmt->getLocStart(), "TODO handle C CXXStaticCastExprClass");
33133311 return ErrorUnexpected;
3314 case Stmt::ObjCBridgedCastExprClass:
3312 case clang::Stmt::ObjCBridgedCastExprClass:
33153313 emit_warning(c, stmt->getLocStart(), "TODO handle C ObjCBridgedCastExprClass");
33163314 return ErrorUnexpected;
3317 case Stmt::CharacterLiteralClass:
3315 case clang::Stmt::CharacterLiteralClass:
33183316 emit_warning(c, stmt->getLocStart(), "TODO handle C CharacterLiteralClass");
33193317 return ErrorUnexpected;
3320 case Stmt::ChooseExprClass:
3318 case clang::Stmt::ChooseExprClass:
33213319 emit_warning(c, stmt->getLocStart(), "TODO handle C ChooseExprClass");
33223320 return ErrorUnexpected;
3323 case Stmt::CompoundLiteralExprClass:
3321 case clang::Stmt::CompoundLiteralExprClass:
33243322 emit_warning(c, stmt->getLocStart(), "TODO handle C CompoundLiteralExprClass");
33253323 return ErrorUnexpected;
3326 case Stmt::ConvertVectorExprClass:
3324 case clang::Stmt::ConvertVectorExprClass:
33273325 emit_warning(c, stmt->getLocStart(), "TODO handle C ConvertVectorExprClass");
33283326 return ErrorUnexpected;
3329 case Stmt::CoawaitExprClass:
3327 case clang::Stmt::CoawaitExprClass:
33303328 emit_warning(c, stmt->getLocStart(), "TODO handle C CoawaitExprClass");
33313329 return ErrorUnexpected;
3332 case Stmt::CoyieldExprClass:
3330 case clang::Stmt::CoyieldExprClass:
33333331 emit_warning(c, stmt->getLocStart(), "TODO handle C CoyieldExprClass");
33343332 return ErrorUnexpected;
3335 case Stmt::DependentCoawaitExprClass:
3333 case clang::Stmt::DependentCoawaitExprClass:
33363334 emit_warning(c, stmt->getLocStart(), "TODO handle C DependentCoawaitExprClass");
33373335 return ErrorUnexpected;
3338 case Stmt::DependentScopeDeclRefExprClass:
3336 case clang::Stmt::DependentScopeDeclRefExprClass:
33393337 emit_warning(c, stmt->getLocStart(), "TODO handle C DependentScopeDeclRefExprClass");
33403338 return ErrorUnexpected;
3341 case Stmt::DesignatedInitExprClass:
3339 case clang::Stmt::DesignatedInitExprClass:
33423340 emit_warning(c, stmt->getLocStart(), "TODO handle C DesignatedInitExprClass");
33433341 return ErrorUnexpected;
3344 case Stmt::DesignatedInitUpdateExprClass:
3342 case clang::Stmt::DesignatedInitUpdateExprClass:
33453343 emit_warning(c, stmt->getLocStart(), "TODO handle C DesignatedInitUpdateExprClass");
33463344 return ErrorUnexpected;
3347 case Stmt::ExprWithCleanupsClass:
3345 case clang::Stmt::ExprWithCleanupsClass:
33483346 emit_warning(c, stmt->getLocStart(), "TODO handle C ExprWithCleanupsClass");
33493347 return ErrorUnexpected;
3350 case Stmt::ExpressionTraitExprClass:
3348 case clang::Stmt::ExpressionTraitExprClass:
33513349 emit_warning(c, stmt->getLocStart(), "TODO handle C ExpressionTraitExprClass");
33523350 return ErrorUnexpected;
3353 case Stmt::ExtVectorElementExprClass:
3351 case clang::Stmt::ExtVectorElementExprClass:
33543352 emit_warning(c, stmt->getLocStart(), "TODO handle C ExtVectorElementExprClass");
33553353 return ErrorUnexpected;
3356 case Stmt::FloatingLiteralClass:
3354 case clang::Stmt::FloatingLiteralClass:
33573355 emit_warning(c, stmt->getLocStart(), "TODO handle C FloatingLiteralClass");
33583356 return ErrorUnexpected;
3359 case Stmt::FunctionParmPackExprClass:
3357 case clang::Stmt::FunctionParmPackExprClass:
33603358 emit_warning(c, stmt->getLocStart(), "TODO handle C FunctionParmPackExprClass");
33613359 return ErrorUnexpected;
3362 case Stmt::GNUNullExprClass:
3360 case clang::Stmt::GNUNullExprClass:
33633361 emit_warning(c, stmt->getLocStart(), "TODO handle C GNUNullExprClass");
33643362 return ErrorUnexpected;
3365 case Stmt::GenericSelectionExprClass:
3363 case clang::Stmt::GenericSelectionExprClass:
33663364 emit_warning(c, stmt->getLocStart(), "TODO handle C GenericSelectionExprClass");
33673365 return ErrorUnexpected;
3368 case Stmt::ImaginaryLiteralClass:
3366 case clang::Stmt::ImaginaryLiteralClass:
33693367 emit_warning(c, stmt->getLocStart(), "TODO handle C ImaginaryLiteralClass");
33703368 return ErrorUnexpected;
3371 case Stmt::ImplicitValueInitExprClass:
3369 case clang::Stmt::ImplicitValueInitExprClass:
33723370 emit_warning(c, stmt->getLocStart(), "TODO handle C ImplicitValueInitExprClass");
33733371 return ErrorUnexpected;
3374 case Stmt::InitListExprClass:
3372 case clang::Stmt::InitListExprClass:
33753373 emit_warning(c, stmt->getLocStart(), "TODO handle C InitListExprClass");
33763374 return ErrorUnexpected;
3377 case Stmt::LambdaExprClass:
3375 case clang::Stmt::LambdaExprClass:
33783376 emit_warning(c, stmt->getLocStart(), "TODO handle C LambdaExprClass");
33793377 return ErrorUnexpected;
3380 case Stmt::MSPropertyRefExprClass:
3378 case clang::Stmt::MSPropertyRefExprClass:
33813379 emit_warning(c, stmt->getLocStart(), "TODO handle C MSPropertyRefExprClass");
33823380 return ErrorUnexpected;
3383 case Stmt::MSPropertySubscriptExprClass:
3381 case clang::Stmt::MSPropertySubscriptExprClass:
33843382 emit_warning(c, stmt->getLocStart(), "TODO handle C MSPropertySubscriptExprClass");
33853383 return ErrorUnexpected;
3386 case Stmt::MaterializeTemporaryExprClass:
3384 case clang::Stmt::MaterializeTemporaryExprClass:
33873385 emit_warning(c, stmt->getLocStart(), "TODO handle C MaterializeTemporaryExprClass");
33883386 return ErrorUnexpected;
3389 case Stmt::NoInitExprClass:
3387 case clang::Stmt::NoInitExprClass:
33903388 emit_warning(c, stmt->getLocStart(), "TODO handle C NoInitExprClass");
33913389 return ErrorUnexpected;
3392 case Stmt::OMPArraySectionExprClass:
3390 case clang::Stmt::OMPArraySectionExprClass:
33933391 emit_warning(c, stmt->getLocStart(), "TODO handle C OMPArraySectionExprClass");
33943392 return ErrorUnexpected;
3395 case Stmt::ObjCArrayLiteralClass:
3393 case clang::Stmt::ObjCArrayLiteralClass:
33963394 emit_warning(c, stmt->getLocStart(), "TODO handle C ObjCArrayLiteralClass");
33973395 return ErrorUnexpected;
3398 case Stmt::ObjCAvailabilityCheckExprClass:
3396 case clang::Stmt::ObjCAvailabilityCheckExprClass:
33993397 emit_warning(c, stmt->getLocStart(), "TODO handle C ObjCAvailabilityCheckExprClass");
34003398 return ErrorUnexpected;
3401 case Stmt::ObjCBoolLiteralExprClass:
3399 case clang::Stmt::ObjCBoolLiteralExprClass:
34023400 emit_warning(c, stmt->getLocStart(), "TODO handle C ObjCBoolLiteralExprClass");
34033401 return ErrorUnexpected;
3404 case Stmt::ObjCBoxedExprClass:
3402 case clang::Stmt::ObjCBoxedExprClass:
34053403 emit_warning(c, stmt->getLocStart(), "TODO handle C ObjCBoxedExprClass");
34063404 return ErrorUnexpected;
3407 case Stmt::ObjCDictionaryLiteralClass:
3405 case clang::Stmt::ObjCDictionaryLiteralClass:
34083406 emit_warning(c, stmt->getLocStart(), "TODO handle C ObjCDictionaryLiteralClass");
34093407 return ErrorUnexpected;
3410 case Stmt::ObjCEncodeExprClass:
3408 case clang::Stmt::ObjCEncodeExprClass:
34113409 emit_warning(c, stmt->getLocStart(), "TODO handle C ObjCEncodeExprClass");
34123410 return ErrorUnexpected;
3413 case Stmt::ObjCIndirectCopyRestoreExprClass:
3411 case clang::Stmt::ObjCIndirectCopyRestoreExprClass:
34143412 emit_warning(c, stmt->getLocStart(), "TODO handle C ObjCIndirectCopyRestoreExprClass");
34153413 return ErrorUnexpected;
3416 case Stmt::ObjCIsaExprClass:
3414 case clang::Stmt::ObjCIsaExprClass:
34173415 emit_warning(c, stmt->getLocStart(), "TODO handle C ObjCIsaExprClass");
34183416 return ErrorUnexpected;
3419 case Stmt::ObjCIvarRefExprClass:
3417 case clang::Stmt::ObjCIvarRefExprClass:
34203418 emit_warning(c, stmt->getLocStart(), "TODO handle C ObjCIvarRefExprClass");
34213419 return ErrorUnexpected;
3422 case Stmt::ObjCMessageExprClass:
3420 case clang::Stmt::ObjCMessageExprClass:
34233421 emit_warning(c, stmt->getLocStart(), "TODO handle C ObjCMessageExprClass");
34243422 return ErrorUnexpected;
3425 case Stmt::ObjCPropertyRefExprClass:
3423 case clang::Stmt::ObjCPropertyRefExprClass:
34263424 emit_warning(c, stmt->getLocStart(), "TODO handle C ObjCPropertyRefExprClass");
34273425 return ErrorUnexpected;
3428 case Stmt::ObjCProtocolExprClass:
3426 case clang::Stmt::ObjCProtocolExprClass:
34293427 emit_warning(c, stmt->getLocStart(), "TODO handle C ObjCProtocolExprClass");
34303428 return ErrorUnexpected;
3431 case Stmt::ObjCSelectorExprClass:
3429 case clang::Stmt::ObjCSelectorExprClass:
34323430 emit_warning(c, stmt->getLocStart(), "TODO handle C ObjCSelectorExprClass");
34333431 return ErrorUnexpected;
3434 case Stmt::ObjCStringLiteralClass:
3432 case clang::Stmt::ObjCStringLiteralClass:
34353433 emit_warning(c, stmt->getLocStart(), "TODO handle C ObjCStringLiteralClass");
34363434 return ErrorUnexpected;
3437 case Stmt::ObjCSubscriptRefExprClass:
3435 case clang::Stmt::ObjCSubscriptRefExprClass:
34383436 emit_warning(c, stmt->getLocStart(), "TODO handle C ObjCSubscriptRefExprClass");
34393437 return ErrorUnexpected;
3440 case Stmt::OffsetOfExprClass:
3438 case clang::Stmt::OffsetOfExprClass:
34413439 emit_warning(c, stmt->getLocStart(), "TODO handle C OffsetOfExprClass");
34423440 return ErrorUnexpected;
3443 case Stmt::OpaqueValueExprClass:
3441 case clang::Stmt::OpaqueValueExprClass:
34443442 emit_warning(c, stmt->getLocStart(), "TODO handle C OpaqueValueExprClass");
34453443 return ErrorUnexpected;
3446 case Stmt::UnresolvedLookupExprClass:
3444 case clang::Stmt::UnresolvedLookupExprClass:
34473445 emit_warning(c, stmt->getLocStart(), "TODO handle C UnresolvedLookupExprClass");
34483446 return ErrorUnexpected;
3449 case Stmt::UnresolvedMemberExprClass:
3447 case clang::Stmt::UnresolvedMemberExprClass:
34503448 emit_warning(c, stmt->getLocStart(), "TODO handle C UnresolvedMemberExprClass");
34513449 return ErrorUnexpected;
3452 case Stmt::PackExpansionExprClass:
3450 case clang::Stmt::PackExpansionExprClass:
34533451 emit_warning(c, stmt->getLocStart(), "TODO handle C PackExpansionExprClass");
34543452 return ErrorUnexpected;
3455 case Stmt::ParenListExprClass:
3453 case clang::Stmt::ParenListExprClass:
34563454 emit_warning(c, stmt->getLocStart(), "TODO handle C ParenListExprClass");
34573455 return ErrorUnexpected;
3458 case Stmt::PredefinedExprClass:
3456 case clang::Stmt::PredefinedExprClass:
34593457 emit_warning(c, stmt->getLocStart(), "TODO handle C PredefinedExprClass");
34603458 return ErrorUnexpected;
3461 case Stmt::PseudoObjectExprClass:
3459 case clang::Stmt::PseudoObjectExprClass:
34623460 emit_warning(c, stmt->getLocStart(), "TODO handle C PseudoObjectExprClass");
34633461 return ErrorUnexpected;
3464 case Stmt::ShuffleVectorExprClass:
3462 case clang::Stmt::ShuffleVectorExprClass:
34653463 emit_warning(c, stmt->getLocStart(), "TODO handle C ShuffleVectorExprClass");
34663464 return ErrorUnexpected;
3467 case Stmt::SizeOfPackExprClass:
3465 case clang::Stmt::SizeOfPackExprClass:
34683466 emit_warning(c, stmt->getLocStart(), "TODO handle C SizeOfPackExprClass");
34693467 return ErrorUnexpected;
3470 case Stmt::StmtExprClass:
3468 case clang::Stmt::StmtExprClass:
34713469 emit_warning(c, stmt->getLocStart(), "TODO handle C StmtExprClass");
34723470 return ErrorUnexpected;
3473 case Stmt::SubstNonTypeTemplateParmExprClass:
3471 case clang::Stmt::SubstNonTypeTemplateParmExprClass:
34743472 emit_warning(c, stmt->getLocStart(), "TODO handle C SubstNonTypeTemplateParmExprClass");
34753473 return ErrorUnexpected;
3476 case Stmt::SubstNonTypeTemplateParmPackExprClass:
3474 case clang::Stmt::SubstNonTypeTemplateParmPackExprClass:
34773475 emit_warning(c, stmt->getLocStart(), "TODO handle C SubstNonTypeTemplateParmPackExprClass");
34783476 return ErrorUnexpected;
3479 case Stmt::TypeTraitExprClass:
3477 case clang::Stmt::TypeTraitExprClass:
34803478 emit_warning(c, stmt->getLocStart(), "TODO handle C TypeTraitExprClass");
34813479 return ErrorUnexpected;
3482 case Stmt::TypoExprClass:
3480 case clang::Stmt::TypoExprClass:
34833481 emit_warning(c, stmt->getLocStart(), "TODO handle C TypoExprClass");
34843482 return ErrorUnexpected;
3485 case Stmt::VAArgExprClass:
3483 case clang::Stmt::VAArgExprClass:
34863484 emit_warning(c, stmt->getLocStart(), "TODO handle C VAArgExprClass");
34873485 return ErrorUnexpected;
3488 case Stmt::GotoStmtClass:
3486 case clang::Stmt::GotoStmtClass:
34893487 emit_warning(c, stmt->getLocStart(), "TODO handle C GotoStmtClass");
34903488 return ErrorUnexpected;
3491 case Stmt::IndirectGotoStmtClass:
3489 case clang::Stmt::IndirectGotoStmtClass:
34923490 emit_warning(c, stmt->getLocStart(), "TODO handle C IndirectGotoStmtClass");
34933491 return ErrorUnexpected;
3494 case Stmt::LabelStmtClass:
3492 case clang::Stmt::LabelStmtClass:
34953493 emit_warning(c, stmt->getLocStart(), "TODO handle C LabelStmtClass");
34963494 return ErrorUnexpected;
3497 case Stmt::MSDependentExistsStmtClass:
3495 case clang::Stmt::MSDependentExistsStmtClass:
34983496 emit_warning(c, stmt->getLocStart(), "TODO handle C MSDependentExistsStmtClass");
34993497 return ErrorUnexpected;
3500 case Stmt::OMPAtomicDirectiveClass:
3498 case clang::Stmt::OMPAtomicDirectiveClass:
35013499 emit_warning(c, stmt->getLocStart(), "TODO handle C OMPAtomicDirectiveClass");
35023500 return ErrorUnexpected;
3503 case Stmt::OMPBarrierDirectiveClass:
3501 case clang::Stmt::OMPBarrierDirectiveClass:
35043502 emit_warning(c, stmt->getLocStart(), "TODO handle C OMPBarrierDirectiveClass");
35053503 return ErrorUnexpected;
3506 case Stmt::OMPCancelDirectiveClass:
3504 case clang::Stmt::OMPCancelDirectiveClass:
35073505 emit_warning(c, stmt->getLocStart(), "TODO handle C OMPCancelDirectiveClass");
35083506 return ErrorUnexpected;
3509 case Stmt::OMPCancellationPointDirectiveClass:
3507 case clang::Stmt::OMPCancellationPointDirectiveClass:
35103508 emit_warning(c, stmt->getLocStart(), "TODO handle C OMPCancellationPointDirectiveClass");
35113509 return ErrorUnexpected;
3512 case Stmt::OMPCriticalDirectiveClass:
3510 case clang::Stmt::OMPCriticalDirectiveClass:
35133511 emit_warning(c, stmt->getLocStart(), "TODO handle C OMPCriticalDirectiveClass");
35143512 return ErrorUnexpected;
3515 case Stmt::OMPFlushDirectiveClass:
3513 case clang::Stmt::OMPFlushDirectiveClass:
35163514 emit_warning(c, stmt->getLocStart(), "TODO handle C OMPFlushDirectiveClass");
35173515 return ErrorUnexpected;
3518 case Stmt::OMPDistributeDirectiveClass:
3516 case clang::Stmt::OMPDistributeDirectiveClass:
35193517 emit_warning(c, stmt->getLocStart(), "TODO handle C OMPDistributeDirectiveClass");
35203518 return ErrorUnexpected;
3521 case Stmt::OMPDistributeParallelForDirectiveClass:
3519 case clang::Stmt::OMPDistributeParallelForDirectiveClass:
35223520 emit_warning(c, stmt->getLocStart(), "TODO handle C OMPDistributeParallelForDirectiveClass");
35233521 return ErrorUnexpected;
3524 case Stmt::OMPDistributeParallelForSimdDirectiveClass:
3522 case clang::Stmt::OMPDistributeParallelForSimdDirectiveClass:
35253523 emit_warning(c, stmt->getLocStart(), "TODO handle C OMPDistributeParallelForSimdDirectiveClass");
35263524 return ErrorUnexpected;
3527 case Stmt::OMPDistributeSimdDirectiveClass:
3525 case clang::Stmt::OMPDistributeSimdDirectiveClass:
35283526 emit_warning(c, stmt->getLocStart(), "TODO handle C OMPDistributeSimdDirectiveClass");
35293527 return ErrorUnexpected;
3530 case Stmt::OMPForDirectiveClass:
3528 case clang::Stmt::OMPForDirectiveClass:
35313529 emit_warning(c, stmt->getLocStart(), "TODO handle C OMPForDirectiveClass");
35323530 return ErrorUnexpected;
3533 case Stmt::OMPForSimdDirectiveClass:
3531 case clang::Stmt::OMPForSimdDirectiveClass:
35343532 emit_warning(c, stmt->getLocStart(), "TODO handle C OMPForSimdDirectiveClass");
35353533 return ErrorUnexpected;
3536 case Stmt::OMPParallelForDirectiveClass:
3534 case clang::Stmt::OMPParallelForDirectiveClass:
35373535 emit_warning(c, stmt->getLocStart(), "TODO handle C OMPParallelForDirectiveClass");
35383536 return ErrorUnexpected;
3539 case Stmt::OMPParallelForSimdDirectiveClass:
3537 case clang::Stmt::OMPParallelForSimdDirectiveClass:
35403538 emit_warning(c, stmt->getLocStart(), "TODO handle C OMPParallelForSimdDirectiveClass");
35413539 return ErrorUnexpected;
3542 case Stmt::OMPSimdDirectiveClass:
3540 case clang::Stmt::OMPSimdDirectiveClass:
35433541 emit_warning(c, stmt->getLocStart(), "TODO handle C OMPSimdDirectiveClass");
35443542 return ErrorUnexpected;
3545 case Stmt::OMPTargetParallelForSimdDirectiveClass:
3543 case clang::Stmt::OMPTargetParallelForSimdDirectiveClass:
35463544 emit_warning(c, stmt->getLocStart(), "TODO handle C OMPTargetParallelForSimdDirectiveClass");
35473545 return ErrorUnexpected;
3548 case Stmt::OMPTargetSimdDirectiveClass:
3546 case clang::Stmt::OMPTargetSimdDirectiveClass:
35493547 emit_warning(c, stmt->getLocStart(), "TODO handle C OMPTargetSimdDirectiveClass");
35503548 return ErrorUnexpected;
3551 case Stmt::OMPTargetTeamsDistributeDirectiveClass:
3549 case clang::Stmt::OMPTargetTeamsDistributeDirectiveClass:
35523550 emit_warning(c, stmt->getLocStart(), "TODO handle C OMPTargetTeamsDistributeDirectiveClass");
35533551 return ErrorUnexpected;
3554 case Stmt::OMPTargetTeamsDistributeParallelForDirectiveClass:
3552 case clang::Stmt::OMPTargetTeamsDistributeParallelForDirectiveClass:
35553553 emit_warning(c, stmt->getLocStart(), "TODO handle C OMPTargetTeamsDistributeParallelForDirectiveClass");
35563554 return ErrorUnexpected;
3557 case Stmt::OMPTargetTeamsDistributeParallelForSimdDirectiveClass:
3555 case clang::Stmt::OMPTargetTeamsDistributeParallelForSimdDirectiveClass:
35583556 emit_warning(c, stmt->getLocStart(), "TODO handle C OMPTargetTeamsDistributeParallelForSimdDirectiveClass");
35593557 return ErrorUnexpected;
3560 case Stmt::OMPTargetTeamsDistributeSimdDirectiveClass:
3558 case clang::Stmt::OMPTargetTeamsDistributeSimdDirectiveClass:
35613559 emit_warning(c, stmt->getLocStart(), "TODO handle C OMPTargetTeamsDistributeSimdDirectiveClass");
35623560 return ErrorUnexpected;
3563 case Stmt::OMPTaskLoopDirectiveClass:
3561 case clang::Stmt::OMPTaskLoopDirectiveClass:
35643562 emit_warning(c, stmt->getLocStart(), "TODO handle C OMPTaskLoopDirectiveClass");
35653563 return ErrorUnexpected;
3566 case Stmt::OMPTaskLoopSimdDirectiveClass:
3564 case clang::Stmt::OMPTaskLoopSimdDirectiveClass:
35673565 emit_warning(c, stmt->getLocStart(), "TODO handle C OMPTaskLoopSimdDirectiveClass");
35683566 return ErrorUnexpected;
3569 case Stmt::OMPTeamsDistributeDirectiveClass:
3567 case clang::Stmt::OMPTeamsDistributeDirectiveClass:
35703568 emit_warning(c, stmt->getLocStart(), "TODO handle C OMPTeamsDistributeDirectiveClass");
35713569 return ErrorUnexpected;
3572 case Stmt::OMPTeamsDistributeParallelForDirectiveClass:
3570 case clang::Stmt::OMPTeamsDistributeParallelForDirectiveClass:
35733571 emit_warning(c, stmt->getLocStart(), "TODO handle C OMPTeamsDistributeParallelForDirectiveClass");
35743572 return ErrorUnexpected;
3575 case Stmt::OMPTeamsDistributeParallelForSimdDirectiveClass:
3573 case clang::Stmt::OMPTeamsDistributeParallelForSimdDirectiveClass:
35763574 emit_warning(c, stmt->getLocStart(), "TODO handle C OMPTeamsDistributeParallelForSimdDirectiveClass");
35773575 return ErrorUnexpected;
3578 case Stmt::OMPTeamsDistributeSimdDirectiveClass:
3576 case clang::Stmt::OMPTeamsDistributeSimdDirectiveClass:
35793577 emit_warning(c, stmt->getLocStart(), "TODO handle C OMPTeamsDistributeSimdDirectiveClass");
35803578 return ErrorUnexpected;
3581 case Stmt::OMPMasterDirectiveClass:
3579 case clang::Stmt::OMPMasterDirectiveClass:
35823580 emit_warning(c, stmt->getLocStart(), "TODO handle C OMPMasterDirectiveClass");
35833581 return ErrorUnexpected;
3584 case Stmt::OMPOrderedDirectiveClass:
3582 case clang::Stmt::OMPOrderedDirectiveClass:
35853583 emit_warning(c, stmt->getLocStart(), "TODO handle C OMPOrderedDirectiveClass");
35863584 return ErrorUnexpected;
3587 case Stmt::OMPParallelDirectiveClass:
3585 case clang::Stmt::OMPParallelDirectiveClass:
35883586 emit_warning(c, stmt->getLocStart(), "TODO handle C OMPParallelDirectiveClass");
35893587 return ErrorUnexpected;
3590 case Stmt::OMPParallelSectionsDirectiveClass:
3588 case clang::Stmt::OMPParallelSectionsDirectiveClass:
35913589 emit_warning(c, stmt->getLocStart(), "TODO handle C OMPParallelSectionsDirectiveClass");
35923590 return ErrorUnexpected;
3593 case Stmt::OMPSectionDirectiveClass:
3591 case clang::Stmt::OMPSectionDirectiveClass:
35943592 emit_warning(c, stmt->getLocStart(), "TODO handle C OMPSectionDirectiveClass");
35953593 return ErrorUnexpected;
3596 case Stmt::OMPSectionsDirectiveClass:
3594 case clang::Stmt::OMPSectionsDirectiveClass:
35973595 emit_warning(c, stmt->getLocStart(), "TODO handle C OMPSectionsDirectiveClass");
35983596 return ErrorUnexpected;
3599 case Stmt::OMPSingleDirectiveClass:
3597 case clang::Stmt::OMPSingleDirectiveClass:
36003598 emit_warning(c, stmt->getLocStart(), "TODO handle C OMPSingleDirectiveClass");
36013599 return ErrorUnexpected;
3602 case Stmt::OMPTargetDataDirectiveClass:
3600 case clang::Stmt::OMPTargetDataDirectiveClass:
36033601 emit_warning(c, stmt->getLocStart(), "TODO handle C OMPTargetDataDirectiveClass");
36043602 return ErrorUnexpected;
3605 case Stmt::OMPTargetDirectiveClass:
3603 case clang::Stmt::OMPTargetDirectiveClass:
36063604 emit_warning(c, stmt->getLocStart(), "TODO handle C OMPTargetDirectiveClass");
36073605 return ErrorUnexpected;
3608 case Stmt::OMPTargetEnterDataDirectiveClass:
3606 case clang::Stmt::OMPTargetEnterDataDirectiveClass:
36093607 emit_warning(c, stmt->getLocStart(), "TODO handle C OMPTargetEnterDataDirectiveClass");
36103608 return ErrorUnexpected;
3611 case Stmt::OMPTargetExitDataDirectiveClass:
3609 case clang::Stmt::OMPTargetExitDataDirectiveClass:
36123610 emit_warning(c, stmt->getLocStart(), "TODO handle C OMPTargetExitDataDirectiveClass");
36133611 return ErrorUnexpected;
3614 case Stmt::OMPTargetParallelDirectiveClass:
3612 case clang::Stmt::OMPTargetParallelDirectiveClass:
36153613 emit_warning(c, stmt->getLocStart(), "TODO handle C OMPTargetParallelDirectiveClass");
36163614 return ErrorUnexpected;
3617 case Stmt::OMPTargetParallelForDirectiveClass:
3615 case clang::Stmt::OMPTargetParallelForDirectiveClass:
36183616 emit_warning(c, stmt->getLocStart(), "TODO handle C OMPTargetParallelForDirectiveClass");
36193617 return ErrorUnexpected;
3620 case Stmt::OMPTargetTeamsDirectiveClass:
3618 case clang::Stmt::OMPTargetTeamsDirectiveClass:
36213619 emit_warning(c, stmt->getLocStart(), "TODO handle C OMPTargetTeamsDirectiveClass");
36223620 return ErrorUnexpected;
3623 case Stmt::OMPTargetUpdateDirectiveClass:
3621 case clang::Stmt::OMPTargetUpdateDirectiveClass:
36243622 emit_warning(c, stmt->getLocStart(), "TODO handle C OMPTargetUpdateDirectiveClass");
36253623 return ErrorUnexpected;
3626 case Stmt::OMPTaskDirectiveClass:
3624 case clang::Stmt::OMPTaskDirectiveClass:
36273625 emit_warning(c, stmt->getLocStart(), "TODO handle C OMPTaskDirectiveClass");
36283626 return ErrorUnexpected;
3629 case Stmt::OMPTaskgroupDirectiveClass:
3627 case clang::Stmt::OMPTaskgroupDirectiveClass:
36303628 emit_warning(c, stmt->getLocStart(), "TODO handle C OMPTaskgroupDirectiveClass");
36313629 return ErrorUnexpected;
3632 case Stmt::OMPTaskwaitDirectiveClass:
3630 case clang::Stmt::OMPTaskwaitDirectiveClass:
36333631 emit_warning(c, stmt->getLocStart(), "TODO handle C OMPTaskwaitDirectiveClass");
36343632 return ErrorUnexpected;
3635 case Stmt::OMPTaskyieldDirectiveClass:
3633 case clang::Stmt::OMPTaskyieldDirectiveClass:
36363634 emit_warning(c, stmt->getLocStart(), "TODO handle C OMPTaskyieldDirectiveClass");
36373635 return ErrorUnexpected;
3638 case Stmt::OMPTeamsDirectiveClass:
3636 case clang::Stmt::OMPTeamsDirectiveClass:
36393637 emit_warning(c, stmt->getLocStart(), "TODO handle C OMPTeamsDirectiveClass");
36403638 return ErrorUnexpected;
3641 case Stmt::ObjCAtCatchStmtClass:
3639 case clang::Stmt::ObjCAtCatchStmtClass:
36423640 emit_warning(c, stmt->getLocStart(), "TODO handle C ObjCAtCatchStmtClass");
36433641 return ErrorUnexpected;
3644 case Stmt::ObjCAtFinallyStmtClass:
3642 case clang::Stmt::ObjCAtFinallyStmtClass:
36453643 emit_warning(c, stmt->getLocStart(), "TODO handle C ObjCAtFinallyStmtClass");
36463644 return ErrorUnexpected;
3647 case Stmt::ObjCAtSynchronizedStmtClass:
3645 case clang::Stmt::ObjCAtSynchronizedStmtClass:
36483646 emit_warning(c, stmt->getLocStart(), "TODO handle C ObjCAtSynchronizedStmtClass");
36493647 return ErrorUnexpected;
3650 case Stmt::ObjCAtThrowStmtClass:
3648 case clang::Stmt::ObjCAtThrowStmtClass:
36513649 emit_warning(c, stmt->getLocStart(), "TODO handle C ObjCAtThrowStmtClass");
36523650 return ErrorUnexpected;
3653 case Stmt::ObjCAtTryStmtClass:
3651 case clang::Stmt::ObjCAtTryStmtClass:
36543652 emit_warning(c, stmt->getLocStart(), "TODO handle C ObjCAtTryStmtClass");
36553653 return ErrorUnexpected;
3656 case Stmt::ObjCAutoreleasePoolStmtClass:
3654 case clang::Stmt::ObjCAutoreleasePoolStmtClass:
36573655 emit_warning(c, stmt->getLocStart(), "TODO handle C ObjCAutoreleasePoolStmtClass");
36583656 return ErrorUnexpected;
3659 case Stmt::ObjCForCollectionStmtClass:
3657 case clang::Stmt::ObjCForCollectionStmtClass:
36603658 emit_warning(c, stmt->getLocStart(), "TODO handle C ObjCForCollectionStmtClass");
36613659 return ErrorUnexpected;
3662 case Stmt::SEHExceptStmtClass:
3660 case clang::Stmt::SEHExceptStmtClass:
36633661 emit_warning(c, stmt->getLocStart(), "TODO handle C SEHExceptStmtClass");
36643662 return ErrorUnexpected;
3665 case Stmt::SEHFinallyStmtClass:
3663 case clang::Stmt::SEHFinallyStmtClass:
36663664 emit_warning(c, stmt->getLocStart(), "TODO handle C SEHFinallyStmtClass");
36673665 return ErrorUnexpected;
3668 case Stmt::SEHLeaveStmtClass:
3666 case clang::Stmt::SEHLeaveStmtClass:
36693667 emit_warning(c, stmt->getLocStart(), "TODO handle C SEHLeaveStmtClass");
36703668 return ErrorUnexpected;
3671 case Stmt::SEHTryStmtClass:
3669 case clang::Stmt::SEHTryStmtClass:
36723670 emit_warning(c, stmt->getLocStart(), "TODO handle C SEHTryStmtClass");
36733671 return ErrorUnexpected;
3674 case Stmt::FixedPointLiteralClass:
3672 case clang::Stmt::FixedPointLiteralClass:
36753673 emit_warning(c, stmt->getLocStart(), "TODO handle C FixedPointLiteralClass");
36763674 return ErrorUnexpected;
36773675 }
......@@ -3679,7 +3677,7 @@ static int trans_stmt_extra(Context *c, TransScope *scope, const Stmt *stmt,
36793677}
36803678
36813679// Returns null if there was an error
3682static AstNode *trans_expr(Context *c, ResultUsed result_used, TransScope *scope, const Expr *expr,
3680static AstNode *trans_expr(Context *c, ResultUsed result_used, TransScope *scope, const clang::Expr *expr,
36833681 TransLRValue lrval)
36843682{
36853683 AstNode *result_node;
......@@ -3692,7 +3690,7 @@ static AstNode *trans_expr(Context *c, ResultUsed result_used, TransScope *scope
36923690
36933691// Statements have no result and no concept of L or R value.
36943692// Returns child scope, or null if there was an error
3695static TransScope *trans_stmt(Context *c, TransScope *scope, const Stmt *stmt, AstNode **out_node) {
3693static TransScope *trans_stmt(Context *c, TransScope *scope, const clang::Stmt *stmt, AstNode **out_node) {
36963694 TransScope *child_scope;
36973695 if (trans_stmt_extra(c, scope, stmt, ResultUsedNo, TransRValue, out_node, &child_scope, nullptr)) {
36983696 return nullptr;
......@@ -3700,7 +3698,7 @@ static TransScope *trans_stmt(Context *c, TransScope *scope, const Stmt *stmt, A
37003698 return child_scope;
37013699}
37023700
3703static void visit_fn_decl(Context *c, const FunctionDecl *fn_decl) {
3701static void visit_fn_decl(Context *c, const clang::FunctionDecl *fn_decl) {
37043702 Buf *fn_name = buf_create_from_str(decl_name(fn_decl));
37053703
37063704 if (get_global(c, fn_name)) {
......@@ -3717,13 +3715,13 @@ static void visit_fn_decl(Context *c, const FunctionDecl *fn_decl) {
37173715 proto_node->data.fn_proto.name = fn_name;
37183716 proto_node->data.fn_proto.is_extern = !fn_decl->hasBody();
37193717
3720 StorageClass sc = fn_decl->getStorageClass();
3721 if (sc == SC_None) {
3718 clang::StorageClass sc = fn_decl->getStorageClass();
3719 if (sc == clang::SC_None) {
37223720 proto_node->data.fn_proto.visib_mod = c->visib_mod;
37233721 proto_node->data.fn_proto.is_export = fn_decl->hasBody() ? c->want_export : false;
3724 } else if (sc == SC_Extern || sc == SC_Static) {
3722 } else if (sc == clang::SC_Extern || sc == clang::SC_Static) {
37253723 proto_node->data.fn_proto.visib_mod = c->visib_mod;
3726 } else if (sc == SC_PrivateExtern) {
3724 } else if (sc == clang::SC_PrivateExtern) {
37273725 emit_warning(c, fn_decl->getLocation(), "unsupported storage class: private extern");
37283726 return;
37293727 } else {
......@@ -3735,7 +3733,7 @@ static void visit_fn_decl(Context *c, const FunctionDecl *fn_decl) {
37353733
37363734 for (size_t i = 0; i < proto_node->data.fn_proto.params.length; i += 1) {
37373735 AstNode *param_node = proto_node->data.fn_proto.params.at(i);
3738 const ParmVarDecl *param = fn_decl->getParamDecl(i);
3736 const clang::ParmVarDecl *param = fn_decl->getParamDecl(i);
37393737 const char *name = decl_name(param);
37403738
37413739 Buf *proto_param_name;
......@@ -3762,7 +3760,7 @@ static void visit_fn_decl(Context *c, const FunctionDecl *fn_decl) {
37623760
37633761 // actual function definition with body
37643762 c->ptr_params.clear();
3765 Stmt *body = fn_decl->getBody();
3763 clang::Stmt *body = fn_decl->getBody();
37663764 AstNode *actual_body_node;
37673765 TransScope *result_scope = trans_stmt(c, scope, body, &actual_body_node);
37683766 if (result_scope == nullptr) {
......@@ -3804,19 +3802,19 @@ static void visit_fn_decl(Context *c, const FunctionDecl *fn_decl) {
38043802 add_top_level_decl(c, fn_def_node->data.fn_def.fn_proto->data.fn_proto.name, fn_def_node);
38053803}
38063804
3807static AstNode *resolve_typdef_as_builtin(Context *c, const TypedefNameDecl *typedef_decl, const char *primitive_name) {
3805static AstNode *resolve_typdef_as_builtin(Context *c, const clang::TypedefNameDecl *typedef_decl, const char *primitive_name) {
38083806 AstNode *node = trans_create_node_symbol_str(c, primitive_name);
38093807 c->decl_table.put(typedef_decl, node);
38103808 return node;
38113809}
38123810
3813static AstNode *resolve_typedef_decl(Context *c, const TypedefNameDecl *typedef_decl) {
3811static AstNode *resolve_typedef_decl(Context *c, const clang::TypedefNameDecl *typedef_decl) {
38143812 auto existing_entry = c->decl_table.maybe_get((void*)typedef_decl->getCanonicalDecl());
38153813 if (existing_entry) {
38163814 return existing_entry->value;
38173815 }
38183816
3819 QualType child_qt = typedef_decl->getUnderlyingType();
3817 clang::QualType child_qt = typedef_decl->getUnderlyingType();
38203818 Buf *type_name = buf_create_from_str(decl_name(typedef_decl));
38213819
38223820 if (buf_eql_str(type_name, "uint8_t")) {
......@@ -3865,7 +3863,7 @@ static AstNode *resolve_typedef_decl(Context *c, const TypedefNameDecl *typedef_
38653863 return symbol_node;
38663864}
38673865
3868struct AstNode *demote_enum_to_opaque(Context *c, const EnumDecl *enum_decl,
3866struct AstNode *demote_enum_to_opaque(Context *c, const clang::EnumDecl *enum_decl,
38693867 Buf *full_type_name, Buf *bare_name)
38703868{
38713869 AstNode *opaque_node = trans_create_node_opaque(c);
......@@ -3880,7 +3878,7 @@ struct AstNode *demote_enum_to_opaque(Context *c, const EnumDecl *enum_decl,
38803878 return symbol_node;
38813879}
38823880
3883static AstNode *resolve_enum_decl(Context *c, const EnumDecl *enum_decl) {
3881static AstNode *resolve_enum_decl(Context *c, const clang::EnumDecl *enum_decl) {
38843882 auto existing_entry = c->decl_table.maybe_get((void*)enum_decl->getCanonicalDecl());
38853883 if (existing_entry) {
38863884 return existing_entry->value;
......@@ -3891,7 +3889,7 @@ static AstNode *resolve_enum_decl(Context *c, const EnumDecl *enum_decl) {
38913889 Buf *bare_name = is_anonymous ? nullptr : buf_create_from_str(raw_name);
38923890 Buf *full_type_name = is_anonymous ? nullptr : buf_sprintf("enum_%s", buf_ptr(bare_name));
38933891
3894 const EnumDecl *enum_def = enum_decl->getDefinition();
3892 const clang::EnumDecl *enum_def = enum_decl->getDefinition();
38953893 if (!enum_def) {
38963894 return demote_enum_to_opaque(c, enum_decl, full_type_name, bare_name);
38973895 }
......@@ -3903,7 +3901,7 @@ static AstNode *resolve_enum_decl(Context *c, const EnumDecl *enum_decl) {
39033901 it_end = enum_def->enumerator_end();
39043902 it != it_end; ++it, field_count += 1)
39053903 {
3906 const EnumConstantDecl *enum_const = *it;
3904 const clang::EnumConstantDecl *enum_const = *it;
39073905 if (enum_const->getInitExpr()) {
39083906 pure_enum = false;
39093907 }
......@@ -3917,8 +3915,8 @@ static AstNode *resolve_enum_decl(Context *c, const EnumDecl *enum_decl) {
39173915 // TODO only emit this tag type if the enum tag type is not the default.
39183916 // I don't know what the default is, need to figure out how clang is deciding.
39193917 // it appears to at least be different across gcc/msvc
3920 if (!c_is_builtin_type(c, enum_decl->getIntegerType(), BuiltinType::UInt) &&
3921 !c_is_builtin_type(c, enum_decl->getIntegerType(), BuiltinType::Int))
3918 if (!c_is_builtin_type(c, enum_decl->getIntegerType(), clang::BuiltinType::UInt) &&
3919 !c_is_builtin_type(c, enum_decl->getIntegerType(), clang::BuiltinType::Int))
39223920 {
39233921 enum_node->data.container_decl.init_arg_expr = tag_int_type;
39243922 }
......@@ -3928,7 +3926,7 @@ static AstNode *resolve_enum_decl(Context *c, const EnumDecl *enum_decl) {
39283926 it_end = enum_def->enumerator_end();
39293927 it != it_end; ++it, i += 1)
39303928 {
3931 const EnumConstantDecl *enum_const = *it;
3929 const clang::EnumConstantDecl *enum_const = *it;
39323930
39333931 Buf *enum_val_name = buf_create_from_str(decl_name(enum_const));
39343932 Buf *field_name;
......@@ -3969,7 +3967,7 @@ static AstNode *resolve_enum_decl(Context *c, const EnumDecl *enum_decl) {
39693967 }
39703968}
39713969
3972static AstNode *demote_struct_to_opaque(Context *c, const RecordDecl *record_decl,
3970static AstNode *demote_struct_to_opaque(Context *c, const clang::RecordDecl *record_decl,
39733971 Buf *full_type_name, Buf *bare_name)
39743972{
39753973 AstNode *opaque_node = trans_create_node_opaque(c);
......@@ -3984,7 +3982,7 @@ static AstNode *demote_struct_to_opaque(Context *c, const RecordDecl *record_dec
39843982 return symbol_node;
39853983}
39863984
3987static AstNode *resolve_record_decl(Context *c, const RecordDecl *record_decl) {
3985static AstNode *resolve_record_decl(Context *c, const clang::RecordDecl *record_decl) {
39883986 auto existing_entry = c->decl_table.maybe_get((void*)record_decl->getCanonicalDecl());
39893987 if (existing_entry) {
39903988 return existing_entry->value;
......@@ -4010,7 +4008,7 @@ static AstNode *resolve_record_decl(Context *c, const RecordDecl *record_decl) {
40104008 Buf *full_type_name = (bare_name == nullptr) ?
40114009 nullptr : buf_sprintf("%s_%s", container_kind_name, buf_ptr(bare_name));
40124010
4013 RecordDecl *record_def = record_decl->getDefinition();
4011 clang::RecordDecl *record_def = record_decl->getDefinition();
40144012 if (record_def == nullptr) {
40154013 return demote_struct_to_opaque(c, record_decl, full_type_name, bare_name);
40164014 }
......@@ -4021,7 +4019,7 @@ static AstNode *resolve_record_decl(Context *c, const RecordDecl *record_decl) {
40214019 it_end = record_def->field_end();
40224020 it != it_end; ++it, field_count += 1)
40234021 {
4024 const FieldDecl *field_decl = *it;
4022 const clang::FieldDecl *field_decl = *it;
40254023
40264024 if (field_decl->isBitField()) {
40274025 emit_warning(c, field_decl->getLocation(), "%s %s demoted to opaque type - has bitfield",
......@@ -4051,7 +4049,7 @@ static AstNode *resolve_record_decl(Context *c, const RecordDecl *record_decl) {
40514049 it_end = record_def->field_end();
40524050 it != it_end; ++it, i += 1)
40534051 {
4054 const FieldDecl *field_decl = *it;
4052 const clang::FieldDecl *field_decl = *it;
40554053
40564054 AstNode *field_node = trans_create_node(c, NodeTypeStructField);
40574055 field_node->data.struct_field.name = buf_create_from_str(decl_name(field_decl));
......@@ -4078,13 +4076,13 @@ static AstNode *resolve_record_decl(Context *c, const RecordDecl *record_decl) {
40784076 }
40794077}
40804078
4081static AstNode *trans_ap_value(Context *c, APValue *ap_value, QualType qt, const SourceLocation &source_loc) {
4079static AstNode *trans_ap_value(Context *c, clang::APValue *ap_value, clang::QualType qt, const clang::SourceLocation &source_loc) {
40824080 switch (ap_value->getKind()) {
4083 case APValue::Int:
4081 case clang::APValue::Int:
40844082 return trans_create_node_apint(c, ap_value->getInt());
4085 case APValue::Uninitialized:
4083 case clang::APValue::Uninitialized:
40864084 return trans_create_node(c, NodeTypeUndefinedLiteral);
4087 case APValue::Array: {
4085 case clang::APValue::Array: {
40884086 emit_warning(c, source_loc, "TODO add a test case for this code");
40894087
40904088 unsigned init_count = ap_value->getArrayInitializedElts();
......@@ -4098,10 +4096,10 @@ static AstNode *trans_ap_value(Context *c, APValue *ap_value, QualType qt, const
40984096 init_node->data.container_init_expr.type = arr_type_node;
40994097 init_node->data.container_init_expr.kind = ContainerInitKindArray;
41004098
4101 QualType child_qt = qt.getTypePtr()->getAsArrayTypeUnsafe()->getElementType();
4099 clang::QualType child_qt = qt.getTypePtr()->getAsArrayTypeUnsafe()->getElementType();
41024100
41034101 for (size_t i = 0; i < init_count; i += 1) {
4104 APValue &elem_ap_val = ap_value->getArrayInitializedElt(i);
4102 clang::APValue &elem_ap_val = ap_value->getArrayInitializedElt(i);
41054103 AstNode *elem_node = trans_ap_value(c, &elem_ap_val, child_qt, source_loc);
41064104 if (elem_node == nullptr)
41074105 return nullptr;
......@@ -4111,7 +4109,7 @@ static AstNode *trans_ap_value(Context *c, APValue *ap_value, QualType qt, const
41114109 return init_node;
41124110 }
41134111
4114 APValue &filler_ap_val = ap_value->getArrayFiller();
4112 clang::APValue &filler_ap_val = ap_value->getArrayFiller();
41154113 AstNode *filler_node = trans_ap_value(c, &filler_ap_val, child_qt, source_loc);
41164114 if (filler_node == nullptr)
41174115 return nullptr;
......@@ -4139,60 +4137,60 @@ static AstNode *trans_ap_value(Context *c, APValue *ap_value, QualType qt, const
41394137
41404138 return trans_create_node_bin_op(c, init_node, BinOpTypeArrayCat, rhs_node);
41414139 }
4142 case APValue::LValue: {
4143 const APValue::LValueBase lval_base = ap_value->getLValueBase();
4144 if (const Expr *expr = lval_base.dyn_cast<const Expr *>()) {
4140 case clang::APValue::LValue: {
4141 const clang::APValue::LValueBase lval_base = ap_value->getLValueBase();
4142 if (const clang::Expr *expr = lval_base.dyn_cast<const clang::Expr *>()) {
41454143 return trans_expr(c, ResultUsedYes, &c->global_scope->base, expr, TransRValue);
41464144 }
4147 //const ValueDecl *value_decl = lval_base.get<const ValueDecl *>();
4148 emit_warning(c, source_loc, "TODO handle initializer LValue ValueDecl");
4145 //const clang::ValueDecl *value_decl = lval_base.get<const clang::ValueDecl *>();
4146 emit_warning(c, source_loc, "TODO handle initializer LValue clang::ValueDecl");
41494147 return nullptr;
41504148 }
4151 case APValue::Float:
4149 case clang::APValue::Float:
41524150 emit_warning(c, source_loc, "unsupported initializer value kind: Float");
41534151 return nullptr;
4154 case APValue::ComplexInt:
4152 case clang::APValue::ComplexInt:
41554153 emit_warning(c, source_loc, "unsupported initializer value kind: ComplexInt");
41564154 return nullptr;
4157 case APValue::ComplexFloat:
4155 case clang::APValue::ComplexFloat:
41584156 emit_warning(c, source_loc, "unsupported initializer value kind: ComplexFloat");
41594157 return nullptr;
4160 case APValue::Vector:
4158 case clang::APValue::Vector:
41614159 emit_warning(c, source_loc, "unsupported initializer value kind: Vector");
41624160 return nullptr;
4163 case APValue::Struct:
4161 case clang::APValue::Struct:
41644162 emit_warning(c, source_loc, "unsupported initializer value kind: Struct");
41654163 return nullptr;
4166 case APValue::Union:
4164 case clang::APValue::Union:
41674165 emit_warning(c, source_loc, "unsupported initializer value kind: Union");
41684166 return nullptr;
4169 case APValue::MemberPointer:
4167 case clang::APValue::MemberPointer:
41704168 emit_warning(c, source_loc, "unsupported initializer value kind: MemberPointer");
41714169 return nullptr;
4172 case APValue::AddrLabelDiff:
4170 case clang::APValue::AddrLabelDiff:
41734171 emit_warning(c, source_loc, "unsupported initializer value kind: AddrLabelDiff");
41744172 return nullptr;
41754173 }
41764174 zig_unreachable();
41774175}
41784176
4179static void visit_var_decl(Context *c, const VarDecl *var_decl) {
4177static void visit_var_decl(Context *c, const clang::VarDecl *var_decl) {
41804178 Buf *name = buf_create_from_str(decl_name(var_decl));
41814179
41824180 switch (var_decl->getTLSKind()) {
4183 case VarDecl::TLS_None:
4181 case clang::VarDecl::TLS_None:
41844182 break;
4185 case VarDecl::TLS_Static:
4183 case clang::VarDecl::TLS_Static:
41864184 emit_warning(c, var_decl->getLocation(),
41874185 "ignoring variable '%s' - static thread local storage", buf_ptr(name));
41884186 return;
4189 case VarDecl::TLS_Dynamic:
4187 case clang::VarDecl::TLS_Dynamic:
41904188 emit_warning(c, var_decl->getLocation(),
41914189 "ignoring variable '%s' - dynamic thread local storage", buf_ptr(name));
41924190 return;
41934191 }
41944192
4195 QualType qt = var_decl->getType();
4193 clang::QualType qt = var_decl->getType();
41964194 AstNode *var_type = trans_qual_type(c, qt, var_decl->getLocation());
41974195 if (var_type == nullptr) {
41984196 emit_warning(c, var_decl->getLocation(), "ignoring variable '%s' - unresolved type", buf_ptr(name));
......@@ -4206,7 +4204,7 @@ static void visit_var_decl(Context *c, const VarDecl *var_decl) {
42064204 if (is_static && !is_extern) {
42074205 AstNode *init_node;
42084206 if (var_decl->hasInit()) {
4209 APValue *ap_value = var_decl->evaluateValue();
4207 clang::APValue *ap_value = var_decl->evaluateValue();
42104208 if (ap_value == nullptr) {
42114209 emit_warning(c, var_decl->getLocation(),
42124210 "ignoring variable '%s' - unable to evaluate initializer", buf_ptr(name));
......@@ -4236,24 +4234,24 @@ static void visit_var_decl(Context *c, const VarDecl *var_decl) {
42364234 return;
42374235}
42384236
4239static bool decl_visitor(void *context, const Decl *decl) {
4237static bool decl_visitor(void *context, const clang::Decl *decl) {
42404238 Context *c = (Context*)context;
42414239
42424240 switch (decl->getKind()) {
4243 case Decl::Function:
4244 visit_fn_decl(c, static_cast<const FunctionDecl*>(decl));
4241 case clang::Decl::Function:
4242 visit_fn_decl(c, static_cast<const clang::FunctionDecl*>(decl));
42454243 break;
4246 case Decl::Typedef:
4247 resolve_typedef_decl(c, static_cast<const TypedefNameDecl *>(decl));
4244 case clang::Decl::Typedef:
4245 resolve_typedef_decl(c, static_cast<const clang::TypedefNameDecl *>(decl));
42484246 break;
4249 case Decl::Enum:
4250 resolve_enum_decl(c, static_cast<const EnumDecl *>(decl));
4247 case clang::Decl::Enum:
4248 resolve_enum_decl(c, static_cast<const clang::EnumDecl *>(decl));
42514249 break;
4252 case Decl::Record:
4253 resolve_record_decl(c, static_cast<const RecordDecl *>(decl));
4250 case clang::Decl::Record:
4251 resolve_record_decl(c, static_cast<const clang::RecordDecl *>(decl));
42544252 break;
4255 case Decl::Var:
4256 visit_var_decl(c, static_cast<const VarDecl *>(decl));
4253 case clang::Decl::Var:
4254 visit_var_decl(c, static_cast<const clang::VarDecl *>(decl));
42574255 break;
42584256 default:
42594257 emit_warning(c, decl->getLocation(), "ignoring %s decl", decl->getDeclKindName());
......@@ -4674,24 +4672,24 @@ static void process_macro(Context *c, CTokenize *ctok, Buf *name, const char *ch
46744672 c->macro_table.put(name, result_node);
46754673}
46764674
4677static void process_preprocessor_entities(Context *c, ASTUnit &unit) {
4675static void process_preprocessor_entities(Context *c, clang::ASTUnit &unit) {
46784676 CTokenize ctok = {{0}};
46794677
46804678 // TODO if we see #undef, delete it from the table
46814679
4682 for (PreprocessedEntity *entity : unit.getLocalPreprocessingEntities()) {
4680 for (clang::PreprocessedEntity *entity : unit.getLocalPreprocessingEntities()) {
46834681 switch (entity->getKind()) {
4684 case PreprocessedEntity::InvalidKind:
4685 case PreprocessedEntity::InclusionDirectiveKind:
4686 case PreprocessedEntity::MacroExpansionKind:
4682 case clang::PreprocessedEntity::InvalidKind:
4683 case clang::PreprocessedEntity::InclusionDirectiveKind:
4684 case clang::PreprocessedEntity::MacroExpansionKind:
46874685 continue;
4688 case PreprocessedEntity::MacroDefinitionKind:
4686 case clang::PreprocessedEntity::MacroDefinitionKind:
46894687 {
4690 MacroDefinitionRecord *macro = static_cast<MacroDefinitionRecord *>(entity);
4688 clang::MacroDefinitionRecord *macro = static_cast<clang::MacroDefinitionRecord *>(entity);
46914689 const char *raw_name = macro->getName()->getNameStart();
4692 SourceRange range = macro->getSourceRange();
4693 SourceLocation begin_loc = range.getBegin();
4694 SourceLocation end_loc = range.getEnd();
4690 clang::SourceRange range = macro->getSourceRange();
4691 clang::SourceLocation begin_loc = range.getBegin();
4692 clang::SourceLocation end_loc = range.getEnd();
46954693
46964694 if (begin_loc == end_loc) {
46974695 // this means it is a macro without a value
......@@ -4816,9 +4814,9 @@ Error parse_h_file(ImportTableEntry *import, ZigList<ErrorMsg *> *errors, const
48164814 // to make the [start...end] argument work
48174815 clang_argv.append(nullptr);
48184816
4819 IntrusiveRefCntPtr<DiagnosticsEngine> diags(CompilerInstance::createDiagnostics(new DiagnosticOptions));
4817 clang::IntrusiveRefCntPtr<clang::DiagnosticsEngine> diags(clang::CompilerInstance::createDiagnostics(new clang::DiagnosticOptions));
48204818
4821 std::shared_ptr<PCHContainerOperations> pch_container_ops = std::make_shared<PCHContainerOperations>();
4819 std::shared_ptr<clang::PCHContainerOperations> pch_container_ops = std::make_shared<clang::PCHContainerOperations>();
48224820
48234821 bool only_local_decls = true;
48244822 bool capture_diagnostics = true;
......@@ -4827,13 +4825,13 @@ Error parse_h_file(ImportTableEntry *import, ZigList<ErrorMsg *> *errors, const
48274825 bool single_file_parse = false;
48284826 bool for_serialization = false;
48294827 const char *resources_path = buf_ptr(codegen->zig_c_headers_dir);
4830 std::unique_ptr<ASTUnit> err_unit;
4831 std::unique_ptr<ASTUnit> ast_unit(ASTUnit::LoadFromCommandLine(
4828 std::unique_ptr<clang::ASTUnit> err_unit;
4829 std::unique_ptr<clang::ASTUnit> ast_unit(clang::ASTUnit::LoadFromCommandLine(
48324830 &clang_argv.at(0), &clang_argv.last(),
48334831 pch_container_ops, diags, resources_path,
4834 only_local_decls, capture_diagnostics, None, true, 0, TU_Complete,
4835 false, false, allow_pch_with_compiler_errors, SkipFunctionBodiesScope::None,
4836 single_file_parse, user_files_are_volatile, for_serialization, None, &err_unit,
4832 only_local_decls, capture_diagnostics, clang::None, true, 0, clang::TU_Complete,
4833 false, false, allow_pch_with_compiler_errors, clang::SkipFunctionBodiesScope::None,
4834 single_file_parse, user_files_are_volatile, for_serialization, clang::None, &err_unit,
48374835 nullptr));
48384836
48394837 // Early failures in LoadFromCommandLine may return with ErrUnit unset.
......@@ -4846,26 +4844,26 @@ Error parse_h_file(ImportTableEntry *import, ZigList<ErrorMsg *> *errors, const
48464844 err_unit = std::move(ast_unit);
48474845 }
48484846
4849 for (ASTUnit::stored_diag_iterator it = err_unit->stored_diag_begin(),
4847 for (clang::ASTUnit::stored_diag_iterator it = err_unit->stored_diag_begin(),
48504848 it_end = err_unit->stored_diag_end();
48514849 it != it_end; ++it)
48524850 {
48534851 switch (it->getLevel()) {
4854 case DiagnosticsEngine::Ignored:
4855 case DiagnosticsEngine::Note:
4856 case DiagnosticsEngine::Remark:
4857 case DiagnosticsEngine::Warning:
4852 case clang::DiagnosticsEngine::Ignored:
4853 case clang::DiagnosticsEngine::Note:
4854 case clang::DiagnosticsEngine::Remark:
4855 case clang::DiagnosticsEngine::Warning:
48584856 continue;
4859 case DiagnosticsEngine::Error:
4860 case DiagnosticsEngine::Fatal:
4857 case clang::DiagnosticsEngine::Error:
4858 case clang::DiagnosticsEngine::Fatal:
48614859 break;
48624860 }
48634861 StringRef msg_str_ref = it->getMessage();
48644862 Buf *msg = string_ref_to_buf(msg_str_ref);
4865 FullSourceLoc fsl = it->getLocation();
4863 clang::FullSourceLoc fsl = it->getLocation();
48664864 if (fsl.hasManager()) {
4867 FileID file_id = fsl.getFileID();
4868 StringRef filename = fsl.getManager().getFilename(fsl);
4865 clang::FileID file_id = fsl.getFileID();
4866 clang::StringRef filename = fsl.getManager().getFilename(fsl);
48694867 unsigned line = fsl.getSpellingLineNumber() - 1;
48704868 unsigned column = fsl.getSpellingColumnNumber() - 1;
48714869 unsigned offset = fsl.getManager().getFileOffset(fsl);