From eec4a0a7f1c59117c85d4ad06d82983cbebd86d0 Mon Sep 17 00:00:00 2001 From: Steve Naroff Date: Sat, 25 Apr 2009 14:04:28 +0000 Subject: Add PCH support for ObjCMessageExpr (needed to build Mail). llvm-svn: 70044 --- clang/lib/Frontend/PCHWriter.cpp | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'clang/lib/Frontend/PCHWriter.cpp') diff --git a/clang/lib/Frontend/PCHWriter.cpp b/clang/lib/Frontend/PCHWriter.cpp index 5a410b1cf86..f8c4a779fb7 100644 --- a/clang/lib/Frontend/PCHWriter.cpp +++ b/clang/lib/Frontend/PCHWriter.cpp @@ -672,6 +672,7 @@ namespace { void VisitObjCEncodeExpr(ObjCEncodeExpr *E); void VisitObjCSelectorExpr(ObjCSelectorExpr *E); void VisitObjCProtocolExpr(ObjCProtocolExpr *E); + void VisitObjCMessageExpr(ObjCMessageExpr *E); }; } @@ -1198,6 +1199,21 @@ void PCHStmtWriter::VisitObjCProtocolExpr(ObjCProtocolExpr *E) { Code = pch::EXPR_OBJC_PROTOCOL_EXPR; } +void PCHStmtWriter::VisitObjCMessageExpr(ObjCMessageExpr *E) { + VisitExpr(E); + Record.push_back(E->getNumArgs()); + Writer.AddSourceLocation(E->getSourceRange().getBegin(), Record); + Writer.AddSourceLocation(E->getSourceRange().getEnd(), Record); + Writer.AddSelectorRef(E->getSelector(), Record); + Writer.AddDeclRef(E->getMethodDecl(), Record); // optional + // FIXME: deal with class messages. + Writer.WriteSubStmt(E->getReceiver()); + for (CallExpr::arg_iterator Arg = E->arg_begin(), ArgEnd = E->arg_end(); + Arg != ArgEnd; ++Arg) + Writer.WriteSubStmt(*Arg); + Code = pch::EXPR_OBJC_MESSAGE_EXPR; +} + //===----------------------------------------------------------------------===// // PCHWriter Implementation -- cgit v1.2.3