diff options
Diffstat (limited to 'lib/Serialization/ASTReaderStmt.cpp')
-rw-r--r-- | lib/Serialization/ASTReaderStmt.cpp | 20 |
1 files changed, 10 insertions, 10 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; |