From: Douglas Gregor Date: Fri, 19 Feb 2010 01:32:14 +0000 (+0000) Subject: AST import for CStyleCastExpr. With this, we can import Cocoa.h into an empty context X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=008847a70ab122a99911149199855060fb3753b4;p=clang AST import for CStyleCastExpr. With this, we can import Cocoa.h into an empty context git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96648 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/AST/ASTImporter.cpp b/lib/AST/ASTImporter.cpp index 573bab7b23..858c8aa650 100644 --- a/lib/AST/ASTImporter.cpp +++ b/lib/AST/ASTImporter.cpp @@ -116,6 +116,7 @@ namespace { Expr *VisitBinaryOperator(BinaryOperator *E); Expr *VisitCompoundAssignOperator(CompoundAssignOperator *E); Expr *VisitImplicitCastExpr(ImplicitCastExpr *E); + Expr *VisitCStyleCastExpr(CStyleCastExpr *E); }; } @@ -2747,6 +2748,25 @@ Expr *ASTNodeImporter::VisitImplicitCastExpr(ImplicitCastExpr *E) { E->isLvalueCast()); } +Expr *ASTNodeImporter::VisitCStyleCastExpr(CStyleCastExpr *E) { + QualType T = Importer.Import(E->getType()); + if (T.isNull()) + return 0; + + Expr *SubExpr = Importer.Import(E->getSubExpr()); + if (!SubExpr) + return 0; + + TypeSourceInfo *TInfo = Importer.Import(E->getTypeInfoAsWritten()); + if (!TInfo && E->getTypeInfoAsWritten()) + return 0; + + return new (Importer.getToContext()) CStyleCastExpr(T, E->getCastKind(), + SubExpr, TInfo, + Importer.Import(E->getLParenLoc()), + Importer.Import(E->getRParenLoc())); +} + ASTImporter::ASTImporter(Diagnostic &Diags, ASTContext &ToContext, FileManager &ToFileManager, ASTContext &FromContext, FileManager &FromFileManager) diff --git a/test/ASTMerge/Inputs/exprs1.c b/test/ASTMerge/Inputs/exprs1.c index 42e06de60a..1c268da15f 100644 --- a/test/ASTMerge/Inputs/exprs1.c +++ b/test/ASTMerge/Inputs/exprs1.c @@ -4,6 +4,7 @@ enum E0 { E0_Val1 = (17), E0_Val2 = (1 << 2), E0_Val3 = E0_Val2, - E0_Val4 = sizeof(int*) + E0_Val4 = sizeof(int*), + E0_Val5 = (unsigned int)-1 }; diff --git a/test/ASTMerge/Inputs/exprs2.c b/test/ASTMerge/Inputs/exprs2.c index 42e06de60a..1c268da15f 100644 --- a/test/ASTMerge/Inputs/exprs2.c +++ b/test/ASTMerge/Inputs/exprs2.c @@ -4,6 +4,7 @@ enum E0 { E0_Val1 = (17), E0_Val2 = (1 << 2), E0_Val3 = E0_Val2, - E0_Val4 = sizeof(int*) + E0_Val4 = sizeof(int*), + E0_Val5 = (unsigned int)-1 };