diff options
-rw-r--r-- | include/clang/AST/ExprObjC.h | 22 | ||||
-rw-r--r-- | include/clang/AST/StmtNodes.def | 5 | ||||
-rw-r--r-- | lib/AST/Expr.cpp | 4 | ||||
-rw-r--r-- | lib/AST/StmtPrinter.cpp | 4 | ||||
-rw-r--r-- | lib/AST/StmtSerialization.cpp | 11 | ||||
-rw-r--r-- | lib/Sema/SemaExpr.cpp | 3 |
6 files changed, 4 insertions, 45 deletions
diff --git a/include/clang/AST/ExprObjC.h b/include/clang/AST/ExprObjC.h index ab4992cfe0..889b7c86b2 100644 --- a/include/clang/AST/ExprObjC.h +++ b/include/clang/AST/ExprObjC.h @@ -359,28 +359,6 @@ public: static ObjCMessageExpr* CreateImpl(llvm::Deserializer& D, ASTContext& C); }; -/// ObjCSuperRefExpr - A reference to super. -class ObjCSuperRefExpr : public Expr { - SourceLocation Loc; -public: - ObjCSuperRefExpr(QualType t, SourceLocation l) : - Expr(ObjCSuperRefExprClass, t), Loc(l) {} - - virtual SourceRange getSourceRange() const { return SourceRange(Loc); } - - static bool classof(const Stmt *T) { - return T->getStmtClass() == ObjCSuperRefExprClass; - } - static bool classof(const ObjCSuperRefExpr *) { return true; } - - // Iterators - virtual child_iterator child_begin(); - virtual child_iterator child_end(); - - virtual void EmitImpl(llvm::Serializer& S) const; - static ObjCSuperRefExpr* CreateImpl(llvm::Deserializer& D, ASTContext& C); -}; - } // end namespace clang #endif diff --git a/include/clang/AST/StmtNodes.def b/include/clang/AST/StmtNodes.def index 3f2b355ce3..e4fa138f94 100644 --- a/include/clang/AST/StmtNodes.def +++ b/include/clang/AST/StmtNodes.def @@ -101,11 +101,10 @@ STMT(73, ObjCSelectorExpr , Expr) STMT(74, ObjCProtocolExpr , Expr) STMT(75, ObjCIvarRefExpr , Expr) STMT(76, ObjCPropertyRefExpr , Expr) -STMT(77, ObjCSuperRefExpr , Expr) // Clang Extensions. -STMT(78, OverloadExpr , Expr) -STMT(79, ShuffleVectorExpr , Expr) +STMT(77, OverloadExpr , Expr) +STMT(78, ShuffleVectorExpr , Expr) LAST_EXPR(79) diff --git a/lib/AST/Expr.cpp b/lib/AST/Expr.cpp index 8cf3b37e85..97e1897424 100644 --- a/lib/AST/Expr.cpp +++ b/lib/AST/Expr.cpp @@ -1259,10 +1259,6 @@ Stmt::child_iterator ObjCIvarRefExpr::child_end() { return &Base+1; } Stmt::child_iterator ObjCPropertyRefExpr::child_begin() { return &Base; } Stmt::child_iterator ObjCPropertyRefExpr::child_end() { return &Base+1; } -// ObjCSuperRefExpr -Stmt::child_iterator ObjCSuperRefExpr::child_begin() { return child_iterator();} -Stmt::child_iterator ObjCSuperRefExpr::child_end() { return child_iterator(); } - // 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 a9818f8fcd..7cd00dab50 100644 --- a/lib/AST/StmtPrinter.cpp +++ b/lib/AST/StmtPrinter.cpp @@ -476,10 +476,6 @@ void StmtPrinter::VisitDeclRefExpr(DeclRefExpr *Node) { OS << Node->getDecl()->getName(); } -void StmtPrinter::VisitObjCSuperRefExpr(ObjCSuperRefExpr *Node) { - OS << "super"; -} - void StmtPrinter::VisitObjCIvarRefExpr(ObjCIvarRefExpr *Node) { if (Node->getBase()) { PrintExpr(Node->getBase()); diff --git a/lib/AST/StmtSerialization.cpp b/lib/AST/StmtSerialization.cpp index cc26b278c3..99ca10d5be 100644 --- a/lib/AST/StmtSerialization.cpp +++ b/lib/AST/StmtSerialization.cpp @@ -1089,17 +1089,6 @@ ObjCStringLiteral* ObjCStringLiteral::CreateImpl(Deserializer& D, ASTContext& C) return new ObjCStringLiteral(String,T,L); } -void ObjCSuperRefExpr::EmitImpl(Serializer& S) const { - S.Emit(Loc); - S.Emit(getType()); -} - -ObjCSuperRefExpr* ObjCSuperRefExpr::CreateImpl(Deserializer& D, ASTContext& C) { - SourceLocation Loc = SourceLocation::ReadVal(D); - QualType T = QualType::ReadVal(D); - return new ObjCSuperRefExpr(T, Loc); -} - //===----------------------------------------------------------------------===// // C++ Serialization //===----------------------------------------------------------------------===// diff --git a/lib/Sema/SemaExpr.cpp b/lib/Sema/SemaExpr.cpp index b44fd877d6..f68f82b87d 100644 --- a/lib/Sema/SemaExpr.cpp +++ b/lib/Sema/SemaExpr.cpp @@ -332,10 +332,11 @@ Sema::ExprResult Sema::ActOnIdentifierExpr(Scope *S, SourceLocation Loc, static_cast<Expr*>(SelfExpr.Val), true, true); } } + // Needed to implement property "super.method" notation. if (SD == 0 && !strcmp(II.getName(), "super")) { QualType T = Context.getPointerType(Context.getObjCInterfaceType( getCurMethodDecl()->getClassInterface())); - return new ObjCSuperRefExpr(T, Loc); + return new PredefinedExpr(Loc, T, PredefinedExpr::ObjCSuper); } } |