diff options
Diffstat (limited to 'lib/AST/StmtSerialization.cpp')
-rw-r--r-- | lib/AST/StmtSerialization.cpp | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/lib/AST/StmtSerialization.cpp b/lib/AST/StmtSerialization.cpp index 1c61b66512..23879ee63b 100644 --- a/lib/AST/StmtSerialization.cpp +++ b/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; } |