From: Douglas Gregor Date: Thu, 23 Apr 2009 03:43:53 +0000 (+0000) Subject: PCH support for ObjCPropertyImplDecl X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=8818c4fb69cb2a4eec94b217a90f94f9e075296e;p=clang PCH support for ObjCPropertyImplDecl git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69858 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/include/clang/AST/DeclObjC.h b/include/clang/AST/DeclObjC.h index 1672aaa51f..c68741ad5c 100644 --- a/include/clang/AST/DeclObjC.h +++ b/include/clang/AST/DeclObjC.h @@ -1179,11 +1179,13 @@ public: ObjCIvarDecl *ivarDecl); SourceLocation getLocStart() const { return AtLoc; } + void setAtLoc(SourceLocation Loc) { AtLoc = Loc; } ObjCPropertyDecl *getPropertyDecl() const { return PropertyDecl; } - + void setPropertyDecl(ObjCPropertyDecl *Prop) { PropertyDecl = Prop; } + Kind getPropertyImplementation() const { return PropertyIvarDecl ? Synthesize : Dynamic; } @@ -1191,7 +1193,8 @@ public: ObjCIvarDecl *getPropertyIvarDecl() const { return PropertyIvarDecl; } - + void setPropertyIvarDecl(ObjCIvarDecl *Ivar) { PropertyIvarDecl = Ivar; } + static bool classof(const Decl *D) { return D->getKind() == ObjCPropertyImpl; } diff --git a/lib/Frontend/PCHReader.cpp b/lib/Frontend/PCHReader.cpp index 481f14855c..0791143a00 100644 --- a/lib/Frontend/PCHReader.cpp +++ b/lib/Frontend/PCHReader.cpp @@ -341,7 +341,11 @@ void PCHDeclReader::VisitObjCImplementationDecl(ObjCImplementationDecl *D) { void PCHDeclReader::VisitObjCPropertyImplDecl(ObjCPropertyImplDecl *D) { VisitDecl(D); - // FIXME: Implement. + D->setAtLoc(SourceLocation::getFromRawEncoding(Record[Idx++])); + D->setPropertyDecl( + cast_or_null(Reader.GetDecl(Record[Idx++]))); + D->setPropertyIvarDecl( + cast_or_null(Reader.GetDecl(Record[Idx++]))); } void PCHDeclReader::VisitFieldDecl(FieldDecl *FD) { @@ -2286,7 +2290,9 @@ Decl *PCHReader::ReadDeclRecord(uint64_t Offset, unsigned Index) { } case pch::DECL_OBJC_PROPERTY_IMPL: { - // FIXME: Implement. + D = ObjCPropertyImplDecl::Create(Context, 0, SourceLocation(), + SourceLocation(), 0, + ObjCPropertyImplDecl::Dynamic, 0); break; } diff --git a/lib/Frontend/PCHWriter.cpp b/lib/Frontend/PCHWriter.cpp index 6961eb6a13..ea2f359e50 100644 --- a/lib/Frontend/PCHWriter.cpp +++ b/lib/Frontend/PCHWriter.cpp @@ -512,7 +512,9 @@ void PCHDeclWriter::VisitObjCImplementationDecl(ObjCImplementationDecl *D) { void PCHDeclWriter::VisitObjCPropertyImplDecl(ObjCPropertyImplDecl *D) { VisitDecl(D); - // FIXME: Implement. + Writer.AddSourceLocation(D->getLocStart(), Record); + Writer.AddDeclRef(D->getPropertyDecl(), Record); + Writer.AddDeclRef(D->getPropertyIvarDecl(), Record); Code = pch::DECL_OBJC_PROPERTY_IMPL; }