diff options
Diffstat (limited to 'lib/Serialization')
-rw-r--r-- | lib/Serialization/ASTReaderStmt.cpp | 20 | ||||
-rw-r--r-- | lib/Serialization/ASTWriter.cpp | 1 | ||||
-rw-r--r-- | lib/Serialization/ASTWriterStmt.cpp | 17 |
3 files changed, 19 insertions, 19 deletions
diff --git a/lib/Serialization/ASTReaderStmt.cpp b/lib/Serialization/ASTReaderStmt.cpp index f361f0d260..2f4bddf468 100644 --- a/lib/Serialization/ASTReaderStmt.cpp +++ b/lib/Serialization/ASTReaderStmt.cpp @@ -122,7 +122,6 @@ namespace clang { void VisitObjCImplicitSetterGetterRefExpr( ObjCImplicitSetterGetterRefExpr *E); void VisitObjCMessageExpr(ObjCMessageExpr *E); - void VisitObjCSuperExpr(ObjCSuperExpr *E); void VisitObjCIsaExpr(ObjCIsaExpr *E); void VisitObjCForCollectionStmt(ObjCForCollectionStmt *); @@ -843,7 +842,13 @@ void ASTStmtReader::VisitObjCPropertyRefExpr(ObjCPropertyRefExpr *E) { VisitExpr(E); E->setProperty(cast<ObjCPropertyDecl>(Reader.GetDecl(Record[Idx++]))); E->setLocation(ReadSourceLocation(Record, Idx)); - E->setBase(Reader.ReadSubExpr()); + E->SuperLoc = ReadSourceLocation(Record, Idx); + if (E->isSuperReceiver()) { + QualType T = Reader.GetType(Record[Idx++]); + E->BaseExprOrSuperType = T.getTypePtr(); + } + else + E->setBase(Reader.ReadSubExpr()); } void ASTStmtReader::VisitObjCImplicitSetterGetterRefExpr( @@ -858,6 +863,9 @@ void ASTStmtReader::VisitObjCImplicitSetterGetterRefExpr( E->setBase(Reader.ReadSubExpr()); E->setLocation(ReadSourceLocation(Record, Idx)); E->setClassLoc(ReadSourceLocation(Record, Idx)); + E->SuperLoc = ReadSourceLocation(Record, Idx); + E->SuperTy = Reader.GetType(Record[Idx++]); + E->IsSuper = Record[Idx++]; } void ASTStmtReader::VisitObjCMessageExpr(ObjCMessageExpr *E) { @@ -898,11 +906,6 @@ void ASTStmtReader::VisitObjCMessageExpr(ObjCMessageExpr *E) { E->setArg(I, Reader.ReadSubExpr()); } -void ASTStmtReader::VisitObjCSuperExpr(ObjCSuperExpr *E) { - VisitExpr(E); - E->setLoc(ReadSourceLocation(Record, Idx)); -} - void ASTStmtReader::VisitObjCForCollectionStmt(ObjCForCollectionStmt *S) { VisitStmt(S); S->setElement(Reader.ReadSubStmt()); @@ -1631,9 +1634,6 @@ Stmt *ASTReader::ReadStmtFromStream(PerFileData &F) { S = ObjCMessageExpr::CreateEmpty(*Context, Record[ASTStmtReader::NumExprFields]); break; - case EXPR_OBJC_SUPER_EXPR: - S = new (Context) ObjCSuperExpr(Empty); - break; case EXPR_OBJC_ISA: S = new (Context) ObjCIsaExpr(Empty); break; diff --git a/lib/Serialization/ASTWriter.cpp b/lib/Serialization/ASTWriter.cpp index f26731caea..eae47db44e 100644 --- a/lib/Serialization/ASTWriter.cpp +++ b/lib/Serialization/ASTWriter.cpp @@ -592,7 +592,6 @@ static void AddStmtsExprs(llvm::BitstreamWriter &Stream, RECORD(EXPR_OBJC_PROPERTY_REF_EXPR); RECORD(EXPR_OBJC_KVC_REF_EXPR); RECORD(EXPR_OBJC_MESSAGE_EXPR); - RECORD(EXPR_OBJC_SUPER_EXPR); RECORD(STMT_OBJC_FOR_COLLECTION); RECORD(STMT_OBJC_CATCH); RECORD(STMT_OBJC_FINALLY); diff --git a/lib/Serialization/ASTWriterStmt.cpp b/lib/Serialization/ASTWriterStmt.cpp index 3905ad6896..489d186973 100644 --- a/lib/Serialization/ASTWriterStmt.cpp +++ b/lib/Serialization/ASTWriterStmt.cpp @@ -103,7 +103,6 @@ namespace clang { void VisitObjCImplicitSetterGetterRefExpr( ObjCImplicitSetterGetterRefExpr *E); void VisitObjCMessageExpr(ObjCMessageExpr *E); - void VisitObjCSuperExpr(ObjCSuperExpr *E); void VisitObjCIsaExpr(ObjCIsaExpr *E); // Objective-C Statements @@ -824,7 +823,12 @@ void ASTStmtWriter::VisitObjCPropertyRefExpr(ObjCPropertyRefExpr *E) { VisitExpr(E); Writer.AddDeclRef(E->getProperty(), Record); Writer.AddSourceLocation(E->getLocation(), Record); - Writer.AddStmt(E->getBase()); + Writer.AddSourceLocation(E->getSuperLocation(), Record); + if (E->isSuperReceiver()) + Writer.AddTypeRef(E->getSuperType(), Record); + else + Writer.AddStmt(E->getBase()); + Code = serialization::EXPR_OBJC_PROPERTY_REF_EXPR; } @@ -839,6 +843,9 @@ void ASTStmtWriter::VisitObjCImplicitSetterGetterRefExpr( Writer.AddStmt(E->getBase()); Writer.AddSourceLocation(E->getLocation(), Record); Writer.AddSourceLocation(E->getClassLoc(), Record); + Writer.AddSourceLocation(E->getSuperLocation(), Record); + Writer.AddTypeRef(E->getSuperType(), Record); + Record.push_back(E->isSuperReceiver()); Code = serialization::EXPR_OBJC_KVC_REF_EXPR; } @@ -879,12 +886,6 @@ void ASTStmtWriter::VisitObjCMessageExpr(ObjCMessageExpr *E) { Code = serialization::EXPR_OBJC_MESSAGE_EXPR; } -void ASTStmtWriter::VisitObjCSuperExpr(ObjCSuperExpr *E) { - VisitExpr(E); - Writer.AddSourceLocation(E->getLoc(), Record); - Code = serialization::EXPR_OBJC_SUPER_EXPR; -} - void ASTStmtWriter::VisitObjCForCollectionStmt(ObjCForCollectionStmt *S) { VisitStmt(S); Writer.AddStmt(S->getElement()); |