diff options
author | Steve Naroff <snaroff@apple.com> | 2009-04-25 14:04:28 +0000 |
---|---|---|
committer | Steve Naroff <snaroff@apple.com> | 2009-04-25 14:04:28 +0000 |
commit | eec4a0a7f1c59117c85d4ad06d82983cbebd86d0 (patch) | |
tree | 40f77586154b6c829a59f9e6532bb7a6e9e807d2 /clang/lib/Frontend/PCHWriter.cpp | |
parent | ac6e6f786b34cb604f297e552c97a235bfd2d768 (diff) | |
download | bcm5719-llvm-eec4a0a7f1c59117c85d4ad06d82983cbebd86d0.tar.gz bcm5719-llvm-eec4a0a7f1c59117c85d4ad06d82983cbebd86d0.zip |
Add PCH support for ObjCMessageExpr (needed to build Mail).
llvm-svn: 70044
Diffstat (limited to 'clang/lib/Frontend/PCHWriter.cpp')
-rw-r--r-- | clang/lib/Frontend/PCHWriter.cpp | 16 |
1 files changed, 16 insertions, 0 deletions
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 |