diff options
| author | Daniel Dunbar <daniel@zuster.org> | 2008-09-03 00:27:26 +0000 |
|---|---|---|
| committer | Daniel Dunbar <daniel@zuster.org> | 2008-09-03 00:27:26 +0000 |
| commit | c5d330400fd473e709f42036080bba7a4b7e48a8 (patch) | |
| tree | d7dae2cebd03b8c1966f8d4736357839116a502d /clang/lib/AST/StmtSerialization.cpp | |
| parent | b530f0812222f25395a841d145cdae785844f52f (diff) | |
| download | bcm5719-llvm-c5d330400fd473e709f42036080bba7a4b7e48a8.tar.gz bcm5719-llvm-c5d330400fd473e709f42036080bba7a4b7e48a8.zip | |
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
Diffstat (limited to 'clang/lib/AST/StmtSerialization.cpp')
| -rw-r--r-- | clang/lib/AST/StmtSerialization.cpp | 17 |
1 files changed, 15 insertions, 2 deletions
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; } |

