diff options
Diffstat (limited to 'lib/AST')
-rw-r--r-- | lib/AST/Expr.cpp | 9 | ||||
-rw-r--r-- | lib/AST/StmtPrinter.cpp | 8 | ||||
-rw-r--r-- | lib/AST/StmtSerialization.cpp | 15 |
3 files changed, 32 insertions, 0 deletions
diff --git a/lib/AST/Expr.cpp b/lib/AST/Expr.cpp index 502dd3b8e5..eb9add9e12 100644 --- a/lib/AST/Expr.cpp +++ b/lib/AST/Expr.cpp @@ -1187,6 +1187,15 @@ Stmt::child_iterator ObjCIvarRefExpr::child_end() { return reinterpret_cast<Stmt**>(&Base)+1; } +// ObjCIvarRefExpr +Stmt::child_iterator ObjCPropertyRefExpr::child_begin() { + return reinterpret_cast<Stmt**>(&Base); +} + +Stmt::child_iterator ObjCPropertyRefExpr::child_end() { + return reinterpret_cast<Stmt**>(&Base)+1; +} + // PreDefinedExpr Stmt::child_iterator PreDefinedExpr::child_begin() { return child_iterator(); } Stmt::child_iterator PreDefinedExpr::child_end() { return child_iterator(); } diff --git a/lib/AST/StmtPrinter.cpp b/lib/AST/StmtPrinter.cpp index b55869b082..d52f48ed21 100644 --- a/lib/AST/StmtPrinter.cpp +++ b/lib/AST/StmtPrinter.cpp @@ -484,6 +484,14 @@ void StmtPrinter::VisitObjCIvarRefExpr(ObjCIvarRefExpr *Node) { OS << Node->getDecl()->getName(); } +void StmtPrinter::VisitObjCPropertyRefExpr(ObjCPropertyRefExpr *Node) { + if (Node->getBase()) { + PrintExpr(Node->getBase()); + OS << "."; + } + // FIXME: OS << Node->getDecl()->getName(); +} + void StmtPrinter::VisitPreDefinedExpr(PreDefinedExpr *Node) { switch (Node->getIdentType()) { default: diff --git a/lib/AST/StmtSerialization.cpp b/lib/AST/StmtSerialization.cpp index 1e5229e26a..25e9514db1 100644 --- a/lib/AST/StmtSerialization.cpp +++ b/lib/AST/StmtSerialization.cpp @@ -988,6 +988,21 @@ ObjCIvarRefExpr* ObjCIvarRefExpr::CreateImpl(Deserializer& D, ASTContext& C) { return dr; } +void ObjCPropertyRefExpr::EmitImpl(Serializer& S) const { + S.Emit(Loc); + S.Emit(getType()); + S.EmitPtr(getDecl()); +} + +ObjCPropertyRefExpr* ObjCPropertyRefExpr::CreateImpl(Deserializer& D, + ASTContext& C) { + SourceLocation Loc = SourceLocation::ReadVal(D); + QualType T = QualType::ReadVal(D); + ObjCPropertyRefExpr* dr = new ObjCPropertyRefExpr(NULL,T,Loc,0); + D.ReadPtr(dr->D,false); + return dr; +} + void ObjCMessageExpr::EmitImpl(Serializer& S) const { S.EmitBool(getReceiver() ? true : false); S.Emit(getType()); |