From c5d330400fd473e709f42036080bba7a4b7e48a8 Mon Sep 17 00:00:00 2001 From: Daniel Dunbar Date: Wed, 3 Sep 2008 00:27:26 +0000 Subject: Fix ObjCPropertRefExpr to be able to encode all the information for uses which refer to methods not properties. - Not yet wired in Sema. llvm-svn: 55681 --- clang/lib/AST/StmtSerialization.cpp | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) (limited to 'clang/lib/AST/StmtSerialization.cpp') diff --git a/clang/lib/AST/StmtSerialization.cpp b/clang/lib/AST/StmtSerialization.cpp index 1c61b66512a..23879ee63b3 100644 --- a/clang/lib/AST/StmtSerialization.cpp +++ b/clang/lib/AST/StmtSerialization.cpp @@ -998,7 +998,14 @@ ObjCIvarRefExpr* ObjCIvarRefExpr::CreateImpl(Deserializer& D, ASTContext& C) { void ObjCPropertyRefExpr::EmitImpl(Serializer& S) const { S.Emit(Loc); S.Emit(getType()); - S.EmitPtr(getDecl()); + unsigned Kind = getKind(); + S.Emit(Kind); + if (Kind == PropertyRef) { + S.EmitPtr(getProperty()); + } else { + S.EmitPtr(getGetterMethod()); + S.EmitPtr(getSetterMethod()); + } } ObjCPropertyRefExpr* ObjCPropertyRefExpr::CreateImpl(Deserializer& D, @@ -1006,7 +1013,13 @@ ObjCPropertyRefExpr* ObjCPropertyRefExpr::CreateImpl(Deserializer& D, SourceLocation Loc = SourceLocation::ReadVal(D); QualType T = QualType::ReadVal(D); ObjCPropertyRefExpr* dr = new ObjCPropertyRefExpr(NULL,T,Loc,0); - D.ReadPtr(dr->D,false); + unsigned Kind = D.ReadInt(); + if (Kind == PropertyRef) { + D.ReadPtr(dr->Referent.AsProperty,false); + } else { + D.ReadPtr(dr->Referent.AsMethod.Setter,false); + D.ReadPtr(dr->Referent.AsMethod.Getter,false); + } return dr; } -- cgit v1.2.3