aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/clang/AST/ExprObjC.h21
-rw-r--r--lib/Serialization/ASTReaderStmt.cpp1
-rw-r--r--lib/Serialization/ASTWriterStmt.cpp1
3 files changed, 7 insertions, 16 deletions
diff --git a/include/clang/AST/ExprObjC.h b/include/clang/AST/ExprObjC.h
index 407a64938b..edcbe3d6ca 100644
--- a/include/clang/AST/ExprObjC.h
+++ b/include/clang/AST/ExprObjC.h
@@ -336,10 +336,6 @@ class ObjCImplicitSetterGetterRefExpr : public Expr {
/// the type associated with 'super' keyword.
QualType SuperTy;
- /// \brief When the receiver in dot-syntax expression is 'super', this is
- /// set to true.
- bool IsSuper:1;
-
public:
ObjCImplicitSetterGetterRefExpr(ObjCMethodDecl *getter,
QualType t,
@@ -348,9 +344,7 @@ public:
: Expr(ObjCImplicitSetterGetterRefExprClass, t, /*TypeDependent=*/false,
base->isValueDependent()),
Setter(setter), Getter(getter), MemberLoc(l), Base(base),
- InterfaceDecl(0), ClassLoc(SourceLocation()) {
- IsSuper = false;
- }
+ InterfaceDecl(0), ClassLoc(SourceLocation()) {}
ObjCImplicitSetterGetterRefExpr(ObjCMethodDecl *getter,
QualType t,
@@ -361,8 +355,8 @@ public:
: Expr(ObjCImplicitSetterGetterRefExprClass, t, /*TypeDependent=*/false,
false),
Setter(setter), Getter(getter), MemberLoc(l),
- InterfaceDecl(0), ClassLoc(SourceLocation()),
- SuperLoc(sl), SuperTy(st), IsSuper(true) {
+ Base(0), InterfaceDecl(0), ClassLoc(SourceLocation()),
+ SuperLoc(sl), SuperTy(st) {
}
ObjCImplicitSetterGetterRefExpr(ObjCMethodDecl *getter,
@@ -371,9 +365,7 @@ public:
SourceLocation l, ObjCInterfaceDecl *C, SourceLocation CL)
: Expr(ObjCImplicitSetterGetterRefExprClass, t, false, false),
Setter(setter), Getter(getter), MemberLoc(l), Base(0), InterfaceDecl(C),
- ClassLoc(CL) {
- IsSuper = false;
- }
+ ClassLoc(CL) {}
explicit ObjCImplicitSetterGetterRefExpr(EmptyShell Empty)
: Expr(ObjCImplicitSetterGetterRefExprClass, Empty){}
@@ -402,7 +394,9 @@ public:
SourceLocation getSuperLocation() const { return SuperLoc; }
QualType getSuperType() const { return SuperTy; }
- bool isSuperReceiver() const { return IsSuper; }
+ /// \brief When the receiver in dot-syntax expression is 'super', this
+ /// method returns true if both Base expression and Interface are null.
+ bool isSuperReceiver() const { return InterfaceDecl == 0 && Base == 0; }
static bool classof(const Stmt *T) {
return T->getStmtClass() == ObjCImplicitSetterGetterRefExprClass;
@@ -417,7 +411,6 @@ private:
friend class ASTStmtReader;
void setSuperLocation(SourceLocation Loc) { SuperLoc = Loc; }
void setSuperType(QualType T) { SuperTy = T; }
- void setSuperReceiver(bool bv) { IsSuper = bv; }
};
/// \brief An expression that sends a message to the given Objective-C
diff --git a/lib/Serialization/ASTReaderStmt.cpp b/lib/Serialization/ASTReaderStmt.cpp
index dad3b70cb2..f1137c0e33 100644
--- a/lib/Serialization/ASTReaderStmt.cpp
+++ b/lib/Serialization/ASTReaderStmt.cpp
@@ -873,7 +873,6 @@ void ASTStmtReader::VisitObjCImplicitSetterGetterRefExpr(
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) {
diff --git a/lib/Serialization/ASTWriterStmt.cpp b/lib/Serialization/ASTWriterStmt.cpp
index b4d9f4dee2..657cd68343 100644
--- a/lib/Serialization/ASTWriterStmt.cpp
+++ b/lib/Serialization/ASTWriterStmt.cpp
@@ -846,7 +846,6 @@ void ASTStmtWriter::VisitObjCImplicitSetterGetterRefExpr(
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;
}