[cfe-commits] r79365 - in /cfe/trunk: include/clang/AST/ include/clang/Frontend/ lib/AST/ lib/Analysis/ lib/CodeGen/ lib/Frontend/ lib/Sema/
Fariborz Jahanian
fjahanian at apple.com
Tue Aug 18 13:50:24 PDT 2009
Author: fjahanian
Date: Tue Aug 18 15:50:23 2009
New Revision: 79365
URL: http://llvm.org/viewvc/llvm-project?rev=79365&view=rev
Log:
Renamed ObjCKVCRefExpr to ObjCImplctSetterGetterRefExpr.
Removed an unnecessary loop to get to setters incoming
argument. Added DoxyGen comments. Still more work
to do in this area (WIP).
Modified:
cfe/trunk/include/clang/AST/ExprObjC.h
cfe/trunk/include/clang/AST/StmtNodes.def
cfe/trunk/include/clang/Frontend/PCHBitCodes.h
cfe/trunk/lib/AST/Expr.cpp
cfe/trunk/lib/AST/StmtDumper.cpp
cfe/trunk/lib/AST/StmtPrinter.cpp
cfe/trunk/lib/AST/StmtProfile.cpp
cfe/trunk/lib/Analysis/GRExprEngine.cpp
cfe/trunk/lib/CodeGen/CGExpr.cpp
cfe/trunk/lib/CodeGen/CGExprAgg.cpp
cfe/trunk/lib/CodeGen/CGExprComplex.cpp
cfe/trunk/lib/CodeGen/CGExprScalar.cpp
cfe/trunk/lib/CodeGen/CGObjC.cpp
cfe/trunk/lib/CodeGen/CGValue.h
cfe/trunk/lib/CodeGen/CodeGenFunction.h
cfe/trunk/lib/Frontend/PCHReaderStmt.cpp
cfe/trunk/lib/Frontend/PCHWriterStmt.cpp
cfe/trunk/lib/Frontend/StmtXML.cpp
cfe/trunk/lib/Sema/SemaExpr.cpp
cfe/trunk/lib/Sema/SemaExprObjC.cpp
cfe/trunk/lib/Sema/SemaStmt.cpp
cfe/trunk/lib/Sema/TreeTransform.h
Modified: cfe/trunk/include/clang/AST/ExprObjC.h
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/AST/ExprObjC.h?rev=79365&r1=79364&r2=79365&view=diff
==============================================================================
--- cfe/trunk/include/clang/AST/ExprObjC.h (original)
+++ cfe/trunk/include/clang/AST/ExprObjC.h Tue Aug 18 15:50:23 2009
@@ -257,13 +257,24 @@
virtual child_iterator child_end();
};
-/// ObjCKVCRefExpr - A dot-syntax expression to access "implicit" properties
-/// (i.e. methods following the property naming convention). KVC stands for
-/// Key Value Encoding, a generic concept for accessing or setting a 'Key'
-/// value for an object.
-///
-class ObjCKVCRefExpr : public Expr {
+/// ObjCImplctSetterGetterRefExpr - A dot-syntax expression to access two
+/// methods; one to set a value to an 'ivar' (Setter) and the other to access
+/// an 'ivar' (Setter).
+/// An example for use of this AST is:
+/// @code
+/// @interface Test { }
+/// - (Test *)crash;
+/// - (void)setCrash: (Test*)value;
+/// @end
+/// void foo(Test *p1, Test *p2)
+/// {
+/// p2.crash = p1.crash; // Uses ObjCImplctSetterGetterRefExpr AST
+/// }
+/// @endcode
+class ObjCImplctSetterGetterRefExpr : public Expr {
+ /// Setter - Setter method user declared for setting its 'ivar' to a value
ObjCMethodDecl *Setter;
+ /// Getter - Getter method user declared for accessing 'ivar' it controls.
ObjCMethodDecl *Getter;
SourceLocation Loc;
// FIXME: Swizzle these into a single pointer.
@@ -272,22 +283,23 @@
SourceLocation ClassLoc;
public:
- ObjCKVCRefExpr(ObjCMethodDecl *getter,
+ ObjCImplctSetterGetterRefExpr(ObjCMethodDecl *getter,
QualType t,
ObjCMethodDecl *setter,
SourceLocation l, Expr *base)
- : Expr(ObjCKVCRefExprClass, t), Setter(setter),
+ : Expr(ObjCImplctSetterGetterRefExprClass, t), Setter(setter),
Getter(getter), Loc(l), Base(base), ClassProp(0),
ClassLoc(SourceLocation()) {
}
- ObjCKVCRefExpr(ObjCMethodDecl *getter,
+ ObjCImplctSetterGetterRefExpr(ObjCMethodDecl *getter,
QualType t,
ObjCMethodDecl *setter,
SourceLocation l, ObjCInterfaceDecl *C, SourceLocation CL)
- : Expr(ObjCKVCRefExprClass, t), Setter(setter),
+ : Expr(ObjCImplctSetterGetterRefExprClass, t), Setter(setter),
Getter(getter), Loc(l), Base(0), ClassProp(C), ClassLoc(CL) {
}
- explicit ObjCKVCRefExpr(EmptyShell Empty) : Expr(ObjCKVCRefExprClass, Empty){}
+ explicit ObjCImplctSetterGetterRefExpr(EmptyShell Empty)
+ : Expr(ObjCImplctSetterGetterRefExprClass, Empty){}
ObjCMethodDecl *getGetterMethod() const { return Getter; }
ObjCMethodDecl *getSetterMethod() const { return Setter; }
@@ -311,9 +323,9 @@
void setClassLoc(SourceLocation L) { ClassLoc = L; }
static bool classof(const Stmt *T) {
- return T->getStmtClass() == ObjCKVCRefExprClass;
+ return T->getStmtClass() == ObjCImplctSetterGetterRefExprClass;
}
- static bool classof(const ObjCKVCRefExpr *) { return true; }
+ static bool classof(const ObjCImplctSetterGetterRefExpr *) { return true; }
// Iterators
virtual child_iterator child_begin();
Modified: cfe/trunk/include/clang/AST/StmtNodes.def
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/AST/StmtNodes.def?rev=79365&r1=79364&r2=79365&view=diff
==============================================================================
--- cfe/trunk/include/clang/AST/StmtNodes.def (original)
+++ cfe/trunk/include/clang/AST/StmtNodes.def Tue Aug 18 15:50:23 2009
@@ -144,7 +144,7 @@
EXPR(ObjCProtocolExpr , Expr)
EXPR(ObjCIvarRefExpr , Expr)
EXPR(ObjCPropertyRefExpr , Expr)
-EXPR(ObjCKVCRefExpr , Expr)
+EXPR(ObjCImplctSetterGetterRefExpr , Expr)
EXPR(ObjCSuperExpr , Expr)
EXPR(ObjCIsaExpr , Expr)
Modified: cfe/trunk/include/clang/Frontend/PCHBitCodes.h
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Frontend/PCHBitCodes.h?rev=79365&r1=79364&r2=79365&view=diff
==============================================================================
--- cfe/trunk/include/clang/Frontend/PCHBitCodes.h (original)
+++ cfe/trunk/include/clang/Frontend/PCHBitCodes.h Tue Aug 18 15:50:23 2009
@@ -636,7 +636,7 @@
EXPR_OBJC_IVAR_REF_EXPR,
/// \brief An ObjCPropertyRefExpr record.
EXPR_OBJC_PROPERTY_REF_EXPR,
- /// \brief An ObjCKVCRefExpr record.
+ /// \brief An ObjCImplctSetterGetterRefExpr record.
EXPR_OBJC_KVC_REF_EXPR,
/// \brief An ObjCMessageExpr record.
EXPR_OBJC_MESSAGE_EXPR,
Modified: cfe/trunk/lib/AST/Expr.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/AST/Expr.cpp?rev=79365&r1=79364&r2=79365&view=diff
==============================================================================
--- cfe/trunk/lib/AST/Expr.cpp (original)
+++ cfe/trunk/lib/AST/Expr.cpp Tue Aug 18 15:50:23 2009
@@ -542,14 +542,15 @@
case ObjCMessageExprClass:
return false;
- case ObjCKVCRefExprClass: { // Dot syntax for message send.
+ case ObjCImplctSetterGetterRefExprClass: { // Dot syntax for message send.
#if 0
- const ObjCKVCRefExpr *KVCRef = cast<ObjCKVCRefExpr>(this);
+ const ObjCImplctSetterGetterRefExpr *Ref =
+ cast<ObjCImplctSetterGetterRefExpr>(this);
// FIXME: We really want the location of the '.' here.
- Loc = KVCRef->getLocation();
- R1 = SourceRange(KVCRef->getLocation(), KVCRef->getLocation());
- if (KVCRef->getBase())
- R2 = KVCRef->getBase()->getSourceRange();
+ Loc = Ref->getLocation();
+ R1 = SourceRange(Ref->getLocation(), Ref->getLocation());
+ if (Ref->getBase())
+ R2 = Ref->getBase()->getSourceRange();
#else
Loc = getExprLoc();
R1 = getSourceRange();
@@ -793,7 +794,7 @@
return LV_Valid;
case ObjCPropertyRefExprClass: // FIXME: check if read-only property.
return LV_Valid;
- case ObjCKVCRefExprClass: // FIXME: check if read-only property.
+ case ObjCImplctSetterGetterRefExprClass: // FIXME: check if read-only property.
return LV_Valid;
case PredefinedExprClass:
return LV_Valid;
@@ -914,9 +915,10 @@
}
// Assigning to an 'implicit' property?
- else if (isa<ObjCKVCRefExpr>(this)) {
- const ObjCKVCRefExpr* KVCExpr = cast<ObjCKVCRefExpr>(this);
- if (KVCExpr->getSetterMethod() == 0)
+ else if (isa<ObjCImplctSetterGetterRefExpr>(this)) {
+ const ObjCImplctSetterGetterRefExpr* Expr =
+ cast<ObjCImplctSetterGetterRefExpr>(this);
+ if (Expr->getSetterMethod() == 0)
return MLV_NoSetterProperty;
}
return MLV_Valid;
@@ -1861,9 +1863,13 @@
Stmt::child_iterator ObjCPropertyRefExpr::child_begin() { return &Base; }
Stmt::child_iterator ObjCPropertyRefExpr::child_end() { return &Base+1; }
-// ObjCKVCRefExpr
-Stmt::child_iterator ObjCKVCRefExpr::child_begin() { return &Base; }
-Stmt::child_iterator ObjCKVCRefExpr::child_end() { return &Base+1; }
+// ObjCImplctSetterGetterRefExpr
+Stmt::child_iterator ObjCImplctSetterGetterRefExpr::child_begin() {
+ return &Base;
+}
+Stmt::child_iterator ObjCImplctSetterGetterRefExpr::child_end() {
+ return &Base+1;
+}
// ObjCSuperExpr
Stmt::child_iterator ObjCSuperExpr::child_begin() { return child_iterator(); }
Modified: cfe/trunk/lib/AST/StmtDumper.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/AST/StmtDumper.cpp?rev=79365&r1=79364&r2=79365&view=diff
==============================================================================
--- cfe/trunk/lib/AST/StmtDumper.cpp (original)
+++ cfe/trunk/lib/AST/StmtDumper.cpp Tue Aug 18 15:50:23 2009
@@ -148,7 +148,8 @@
void VisitObjCSelectorExpr(ObjCSelectorExpr *Node);
void VisitObjCProtocolExpr(ObjCProtocolExpr *Node);
void VisitObjCPropertyRefExpr(ObjCPropertyRefExpr *Node);
- void VisitObjCKVCRefExpr(ObjCKVCRefExpr *Node);
+ void VisitObjCImplctSetterGetterRefExpr(
+ ObjCImplctSetterGetterRefExpr *Node);
void VisitObjCIvarRefExpr(ObjCIvarRefExpr *Node);
void VisitObjCSuperExpr(ObjCSuperExpr *Node);
};
@@ -521,7 +522,8 @@
Node->getProperty()->getNameAsString().c_str());
}
-void StmtDumper::VisitObjCKVCRefExpr(ObjCKVCRefExpr *Node) {
+void StmtDumper::VisitObjCImplctSetterGetterRefExpr(
+ ObjCImplctSetterGetterRefExpr *Node) {
DumpExpr(Node);
ObjCMethodDecl *Getter = Node->getGetterMethod();
Modified: cfe/trunk/lib/AST/StmtPrinter.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/AST/StmtPrinter.cpp?rev=79365&r1=79364&r2=79365&view=diff
==============================================================================
--- cfe/trunk/lib/AST/StmtPrinter.cpp (original)
+++ cfe/trunk/lib/AST/StmtPrinter.cpp Tue Aug 18 15:50:23 2009
@@ -518,12 +518,15 @@
OS << Node->getProperty()->getNameAsCString();
}
-void StmtPrinter::VisitObjCKVCRefExpr(ObjCKVCRefExpr *Node) {
+void StmtPrinter::VisitObjCImplctSetterGetterRefExpr(
+ ObjCImplctSetterGetterRefExpr *Node) {
if (Node->getBase()) {
PrintExpr(Node->getBase());
OS << ".";
}
- // FIXME: Setter/Getter names
+ if (Node->getGetterMethod())
+ OS << Node->getGetterMethod()->getNameAsString();
+
}
void StmtPrinter::VisitPredefinedExpr(PredefinedExpr *Node) {
Modified: cfe/trunk/lib/AST/StmtProfile.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/AST/StmtProfile.cpp?rev=79365&r1=79364&r2=79365&view=diff
==============================================================================
--- cfe/trunk/lib/AST/StmtProfile.cpp (original)
+++ cfe/trunk/lib/AST/StmtProfile.cpp Tue Aug 18 15:50:23 2009
@@ -583,7 +583,8 @@
VisitDecl(S->getProperty());
}
-void StmtProfiler::VisitObjCKVCRefExpr(ObjCKVCRefExpr *S) {
+void StmtProfiler::VisitObjCImplctSetterGetterRefExpr(
+ ObjCImplctSetterGetterRefExpr *S) {
VisitExpr(S);
VisitDecl(S->getGetterMethod());
VisitDecl(S->getSetterMethod());
Modified: cfe/trunk/lib/Analysis/GRExprEngine.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Analysis/GRExprEngine.cpp?rev=79365&r1=79364&r2=79365&view=diff
==============================================================================
--- cfe/trunk/lib/Analysis/GRExprEngine.cpp (original)
+++ cfe/trunk/lib/Analysis/GRExprEngine.cpp Tue Aug 18 15:50:23 2009
@@ -528,7 +528,7 @@
return;
case Stmt::ObjCPropertyRefExprClass:
- case Stmt::ObjCKVCRefExprClass:
+ case Stmt::ObjCImplctSetterGetterRefExprClass:
// FIXME: Property assignments are lvalues, but not really "locations".
// e.g.: self.x = something;
// Here the "self.x" really can translate to a method call (setter) when
@@ -2787,8 +2787,8 @@
Expr* LHS = B->getLHS()->IgnoreParens();
Expr* RHS = B->getRHS()->IgnoreParens();
- // FIXME: Add proper support for ObjCKVCRefExpr.
- if (isa<ObjCKVCRefExpr>(LHS)) {
+ // FIXME: Add proper support for ObjCImplctSetterGetterRefExpr.
+ if (isa<ObjCImplctSetterGetterRefExpr>(LHS)) {
Visit(RHS, Pred, Dst);
return;
}
Modified: cfe/trunk/lib/CodeGen/CGExpr.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGExpr.cpp?rev=79365&r1=79364&r2=79365&view=diff
==============================================================================
--- cfe/trunk/lib/CodeGen/CGExpr.cpp (original)
+++ cfe/trunk/lib/CodeGen/CGExpr.cpp Tue Aug 18 15:50:23 2009
@@ -227,8 +227,8 @@
return EmitObjCIvarRefLValue(cast<ObjCIvarRefExpr>(E));
case Expr::ObjCPropertyRefExprClass:
return EmitObjCPropertyRefLValue(cast<ObjCPropertyRefExpr>(E));
- case Expr::ObjCKVCRefExprClass:
- return EmitObjCKVCRefLValue(cast<ObjCKVCRefExpr>(E));
+ case Expr::ObjCImplctSetterGetterRefExprClass:
+ return EmitObjCKVCRefLValue(cast<ObjCImplctSetterGetterRefExpr>(E));
case Expr::ObjCSuperExprClass:
return EmitObjCSuperExprLValue(cast<ObjCSuperExpr>(E));
@@ -1026,7 +1026,7 @@
isUnion = true;
CVRQualifiers = PTy->getPointeeType().getCVRQualifiers();
} else if (isa<ObjCPropertyRefExpr>(BaseExpr) ||
- isa<ObjCKVCRefExpr>(BaseExpr)) {
+ isa<ObjCImplctSetterGetterRefExpr>(BaseExpr)) {
RValue RV = EmitObjCPropertyGet(BaseExpr);
BaseValue = RV.getAggregateAddr();
if (BaseExpr->getType()->isUnionType())
@@ -1341,7 +1341,8 @@
}
LValue
-CodeGenFunction::EmitObjCKVCRefLValue(const ObjCKVCRefExpr *E) {
+CodeGenFunction::EmitObjCKVCRefLValue(
+ const ObjCImplctSetterGetterRefExpr *E) {
// This is a special l-value that just issues sends when we load or
// store through it.
return LValue::MakeKVCRef(E, E->getType().getCVRQualifiers());
Modified: cfe/trunk/lib/CodeGen/CGExprAgg.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGExprAgg.cpp?rev=79365&r1=79364&r2=79365&view=diff
==============================================================================
--- cfe/trunk/lib/CodeGen/CGExprAgg.cpp (original)
+++ cfe/trunk/lib/CodeGen/CGExprAgg.cpp Tue Aug 18 15:50:23 2009
@@ -99,7 +99,7 @@
EmitAggLoadOfLValue(E);
}
void VisitObjCPropertyRefExpr(ObjCPropertyRefExpr *E);
- void VisitObjCKVCRefExpr(ObjCKVCRefExpr *E);
+ void VisitObjCImplctSetterGetterRefExpr(ObjCImplctSetterGetterRefExpr *E);
void VisitConditionalOperator(const ConditionalOperator *CO);
void VisitChooseExpr(const ChooseExpr *CE);
@@ -208,7 +208,8 @@
EmitFinalDestCopy(E, RV);
}
-void AggExprEmitter::VisitObjCKVCRefExpr(ObjCKVCRefExpr *E) {
+void AggExprEmitter::VisitObjCImplctSetterGetterRefExpr(
+ ObjCImplctSetterGetterRefExpr *E) {
RValue RV = CGF.EmitObjCPropertyGet(E);
EmitFinalDestCopy(E, RV);
}
Modified: cfe/trunk/lib/CodeGen/CGExprComplex.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGExprComplex.cpp?rev=79365&r1=79364&r2=79365&view=diff
==============================================================================
--- cfe/trunk/lib/CodeGen/CGExprComplex.cpp (original)
+++ cfe/trunk/lib/CodeGen/CGExprComplex.cpp Tue Aug 18 15:50:23 2009
@@ -120,7 +120,8 @@
ComplexPairTy VisitObjCPropertyRefExpr(ObjCPropertyRefExpr *E) {
return EmitLoadOfLValue(E);
}
- ComplexPairTy VisitObjCKVCRefExpr(ObjCKVCRefExpr *E) {
+ ComplexPairTy VisitObjCImplctSetterGetterRefExpr(
+ ObjCImplctSetterGetterRefExpr *E) {
return EmitLoadOfLValue(E);
}
ComplexPairTy VisitObjCMessageExpr(ObjCMessageExpr *E) {
Modified: cfe/trunk/lib/CodeGen/CGExprScalar.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGExprScalar.cpp?rev=79365&r1=79364&r2=79365&view=diff
==============================================================================
--- cfe/trunk/lib/CodeGen/CGExprScalar.cpp (original)
+++ cfe/trunk/lib/CodeGen/CGExprScalar.cpp Tue Aug 18 15:50:23 2009
@@ -158,7 +158,8 @@
Value *VisitObjCPropertyRefExpr(ObjCPropertyRefExpr *E) {
return EmitLoadOfLValue(E);
}
- Value *VisitObjCKVCRefExpr(ObjCKVCRefExpr *E) {
+ Value *VisitObjCImplctSetterGetterRefExpr(
+ ObjCImplctSetterGetterRefExpr *E) {
return EmitLoadOfLValue(E);
}
Value *VisitObjCMessageExpr(ObjCMessageExpr *E) {
Modified: cfe/trunk/lib/CodeGen/CGObjC.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGObjC.cpp?rev=79365&r1=79364&r2=79365&view=diff
==============================================================================
--- cfe/trunk/lib/CodeGen/CGObjC.cpp (original)
+++ cfe/trunk/lib/CodeGen/CGObjC.cpp Tue Aug 18 15:50:23 2009
@@ -337,7 +337,8 @@
EmitScalarExpr(E->getBase()),
false, CallArgList());
} else {
- const ObjCKVCRefExpr *KE = cast<ObjCKVCRefExpr>(Exp);
+ const ObjCImplctSetterGetterRefExpr *KE =
+ cast<ObjCImplctSetterGetterRefExpr>(Exp);
Selector S = KE->getGetterMethod()->getSelector();
llvm::Value *Receiver;
if (KE->getClassProp()) {
@@ -388,7 +389,8 @@
CGM.getObjCRuntime().GenerateMessageSend(*this, getContext().VoidTy, S,
EmitScalarExpr(E->getBase()),
false, Args);
- } else if (const ObjCKVCRefExpr *E = dyn_cast<ObjCKVCRefExpr>(Exp)) {
+ } else if (const ObjCImplctSetterGetterRefExpr *E =
+ dyn_cast<ObjCImplctSetterGetterRefExpr>(Exp)) {
Selector S = E->getSetterMethod()->getSelector();
CallArgList Args;
llvm::Value *Receiver;
Modified: cfe/trunk/lib/CodeGen/CGValue.h
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGValue.h?rev=79365&r1=79364&r2=79365&view=diff
==============================================================================
--- cfe/trunk/lib/CodeGen/CGValue.h (original)
+++ cfe/trunk/lib/CodeGen/CGValue.h Tue Aug 18 15:50:23 2009
@@ -24,7 +24,7 @@
namespace clang {
class ObjCPropertyRefExpr;
- class ObjCKVCRefExpr;
+ class ObjCImplctSetterGetterRefExpr;
namespace CodeGen {
@@ -143,7 +143,7 @@
// Obj-C property reference expression
const ObjCPropertyRefExpr *PropertyRefExpr;
// ObjC 'implicit' property reference expression
- const ObjCKVCRefExpr *KVCRefExpr;
+ const ObjCImplctSetterGetterRefExpr *KVCRefExpr;
};
bool Volatile:1;
@@ -251,7 +251,7 @@
}
// 'implicit' property ref lvalue
- const ObjCKVCRefExpr *getKVCRefExpr() const {
+ const ObjCImplctSetterGetterRefExpr *getKVCRefExpr() const {
assert(isKVCRef());
return KVCRefExpr;
}
@@ -313,7 +313,8 @@
return R;
}
- static LValue MakeKVCRef(const ObjCKVCRefExpr *E, unsigned Qualifiers) {
+ static LValue MakeKVCRef(const ObjCImplctSetterGetterRefExpr *E,
+ unsigned Qualifiers) {
LValue R;
R.LVType = KVCRef;
R.KVCRefExpr = E;
Modified: cfe/trunk/lib/CodeGen/CodeGenFunction.h
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CodeGenFunction.h?rev=79365&r1=79364&r2=79365&view=diff
==============================================================================
--- cfe/trunk/lib/CodeGen/CodeGenFunction.h (original)
+++ cfe/trunk/lib/CodeGen/CodeGenFunction.h Tue Aug 18 15:50:23 2009
@@ -805,7 +805,7 @@
LValue EmitObjCMessageExprLValue(const ObjCMessageExpr *E);
LValue EmitObjCIvarRefLValue(const ObjCIvarRefExpr *E);
LValue EmitObjCPropertyRefLValue(const ObjCPropertyRefExpr *E);
- LValue EmitObjCKVCRefLValue(const ObjCKVCRefExpr *E);
+ LValue EmitObjCKVCRefLValue(const ObjCImplctSetterGetterRefExpr *E);
LValue EmitObjCSuperExprLValue(const ObjCSuperExpr *E);
LValue EmitStmtExprLValue(const StmtExpr *E);
Modified: cfe/trunk/lib/Frontend/PCHReaderStmt.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Frontend/PCHReaderStmt.cpp?rev=79365&r1=79364&r2=79365&view=diff
==============================================================================
--- cfe/trunk/lib/Frontend/PCHReaderStmt.cpp (original)
+++ cfe/trunk/lib/Frontend/PCHReaderStmt.cpp Tue Aug 18 15:50:23 2009
@@ -101,7 +101,8 @@
unsigned VisitObjCProtocolExpr(ObjCProtocolExpr *E);
unsigned VisitObjCIvarRefExpr(ObjCIvarRefExpr *E);
unsigned VisitObjCPropertyRefExpr(ObjCPropertyRefExpr *E);
- unsigned VisitObjCKVCRefExpr(ObjCKVCRefExpr *E);
+ unsigned VisitObjCImplctSetterGetterRefExpr(
+ ObjCImplctSetterGetterRefExpr *E);
unsigned VisitObjCMessageExpr(ObjCMessageExpr *E);
unsigned VisitObjCSuperExpr(ObjCSuperExpr *E);
unsigned VisitObjCIsaExpr(ObjCIsaExpr *E);
@@ -741,7 +742,8 @@
return 1;
}
-unsigned PCHStmtReader::VisitObjCKVCRefExpr(ObjCKVCRefExpr *E) {
+unsigned PCHStmtReader::VisitObjCImplctSetterGetterRefExpr(
+ ObjCImplctSetterGetterRefExpr *E) {
VisitExpr(E);
E->setGetterMethod(
cast_or_null<ObjCMethodDecl>(Reader.GetDecl(Record[Idx++])));
@@ -1114,7 +1116,7 @@
S = new (Context) ObjCPropertyRefExpr(Empty);
break;
case pch::EXPR_OBJC_KVC_REF_EXPR:
- S = new (Context) ObjCKVCRefExpr(Empty);
+ S = new (Context) ObjCImplctSetterGetterRefExpr(Empty);
break;
case pch::EXPR_OBJC_MESSAGE_EXPR:
S = new (Context) ObjCMessageExpr(Empty);
Modified: cfe/trunk/lib/Frontend/PCHWriterStmt.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Frontend/PCHWriterStmt.cpp?rev=79365&r1=79364&r2=79365&view=diff
==============================================================================
--- cfe/trunk/lib/Frontend/PCHWriterStmt.cpp (original)
+++ cfe/trunk/lib/Frontend/PCHWriterStmt.cpp Tue Aug 18 15:50:23 2009
@@ -94,7 +94,8 @@
void VisitObjCProtocolExpr(ObjCProtocolExpr *E);
void VisitObjCIvarRefExpr(ObjCIvarRefExpr *E);
void VisitObjCPropertyRefExpr(ObjCPropertyRefExpr *E);
- void VisitObjCKVCRefExpr(ObjCKVCRefExpr *E);
+ void VisitObjCImplctSetterGetterRefExpr(
+ ObjCImplctSetterGetterRefExpr *E);
void VisitObjCMessageExpr(ObjCMessageExpr *E);
void VisitObjCSuperExpr(ObjCSuperExpr *E);
void VisitObjCIsaExpr(ObjCIsaExpr *E);
@@ -672,7 +673,8 @@
Code = pch::EXPR_OBJC_PROPERTY_REF_EXPR;
}
-void PCHStmtWriter::VisitObjCKVCRefExpr(ObjCKVCRefExpr *E) {
+void PCHStmtWriter::VisitObjCImplctSetterGetterRefExpr(
+ ObjCImplctSetterGetterRefExpr *E) {
VisitExpr(E);
Writer.AddDeclRef(E->getGetterMethod(), Record);
Writer.AddDeclRef(E->getSetterMethod(), Record);
Modified: cfe/trunk/lib/Frontend/StmtXML.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Frontend/StmtXML.cpp?rev=79365&r1=79364&r2=79365&view=diff
==============================================================================
--- cfe/trunk/lib/Frontend/StmtXML.cpp (original)
+++ cfe/trunk/lib/Frontend/StmtXML.cpp Tue Aug 18 15:50:23 2009
@@ -163,7 +163,8 @@
void VisitObjCSelectorExpr(ObjCSelectorExpr *Node);
void VisitObjCProtocolExpr(ObjCProtocolExpr *Node);
void VisitObjCPropertyRefExpr(ObjCPropertyRefExpr *Node);
- void VisitObjCKVCRefExpr(ObjCKVCRefExpr *Node);
+ void VisitObjCImplctSetterGetterRefExpr(
+ ObjCImplctSetterGetterRefExpr *Node);
void VisitObjCIvarRefExpr(ObjCIvarRefExpr *Node);
void VisitObjCSuperExpr(ObjCSuperExpr *Node);
#endif
@@ -438,7 +439,8 @@
Doc.addAttribute("property", Node->getProperty()->getNameAsString());
}
-void StmtXML::VisitObjCKVCRefExpr(ObjCKVCRefExpr *Node) {
+void StmtXML::VisitObjCImplctSetterGetterRefExpr(
+ ObjCImplctSetterGetterRefExpr *Node) {
DumpExpr(Node);
ObjCMethodDecl *Getter = Node->getGetterMethod();
ObjCMethodDecl *Setter = Node->getSetterMethod();
Modified: cfe/trunk/lib/Sema/SemaExpr.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaExpr.cpp?rev=79365&r1=79364&r2=79365&view=diff
==============================================================================
--- cfe/trunk/lib/Sema/SemaExpr.cpp (original)
+++ cfe/trunk/lib/Sema/SemaExpr.cpp Tue Aug 18 15:50:23 2009
@@ -2342,13 +2342,11 @@
if (Getter)
PType = Getter->getResultType();
- else {
- for (ObjCMethodDecl::param_iterator PI = Setter->param_begin(),
- E = Setter->param_end(); PI != E; ++PI)
- PType = (*PI)->getType();
- }
+ else
+ // Get the expression type from Setter's incoming parameter.
+ PType = (*(Setter->param_end() -1))->getType();
// FIXME: we must check that the setter has property type.
- return Owned(new (Context) ObjCKVCRefExpr(Getter, PType,
+ return Owned(new (Context) ObjCImplctSetterGetterRefExpr(Getter, PType,
Setter, MemberLoc, BaseExpr));
}
return ExprError(Diag(MemberLoc, diag::err_property_not_found)
@@ -2535,13 +2533,11 @@
if (Getter)
PType = Getter->getResultType();
- else {
- for (ObjCMethodDecl::param_iterator PI = Setter->param_begin(),
- E = Setter->param_end(); PI != E; ++PI)
- PType = (*PI)->getType();
- }
+ else
+ // Get the expression type from Setter's incoming parameter.
+ PType = (*(Setter->param_end() -1))->getType();
// FIXME: we must check that the setter has property type.
- return Owned(new (Context) ObjCKVCRefExpr(Getter, PType,
+ return Owned(new (Context) ObjCImplctSetterGetterRefExpr(Getter, PType,
Setter, MemberLoc, BaseExpr));
}
return ExprError(Diag(MemberLoc, diag::err_property_not_found)
Modified: cfe/trunk/lib/Sema/SemaExprObjC.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaExprObjC.cpp?rev=79365&r1=79364&r2=79365&view=diff
==============================================================================
--- cfe/trunk/lib/Sema/SemaExprObjC.cpp (original)
+++ cfe/trunk/lib/Sema/SemaExprObjC.cpp Tue Aug 18 15:50:23 2009
@@ -338,7 +338,8 @@
E = Setter->param_end(); PI != E; ++PI)
PType = (*PI)->getType();
}
- return Owned(new (Context) ObjCKVCRefExpr(Getter, PType, Setter,
+ return Owned(new (Context) ObjCImplctSetterGetterRefExpr(
+ Getter, PType, Setter,
propertyNameLoc, IFace, receiverNameLoc));
}
return ExprError(Diag(propertyNameLoc, diag::err_property_not_found)
Modified: cfe/trunk/lib/Sema/SemaStmt.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaStmt.cpp?rev=79365&r1=79364&r2=79365&view=diff
==============================================================================
--- cfe/trunk/lib/Sema/SemaStmt.cpp (original)
+++ cfe/trunk/lib/Sema/SemaStmt.cpp Tue Aug 18 15:50:23 2009
@@ -70,7 +70,7 @@
// cases now.
unsigned DiagID = diag::warn_unused_expr;
E = E->IgnoreParens();
- if (isa<ObjCKVCRefExpr>(E))
+ if (isa<ObjCImplctSetterGetterRefExpr>(E))
DiagID = diag::warn_unused_property_expr;
Diag(Loc, DiagID) << R1 << R2;
Modified: cfe/trunk/lib/Sema/TreeTransform.h
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/TreeTransform.h?rev=79365&r1=79364&r2=79365&view=diff
==============================================================================
--- cfe/trunk/lib/Sema/TreeTransform.h (original)
+++ cfe/trunk/lib/Sema/TreeTransform.h Tue Aug 18 15:50:23 2009
@@ -3409,7 +3409,8 @@
template<typename Derived>
Sema::OwningExprResult
-TreeTransform<Derived>::TransformObjCKVCRefExpr(ObjCKVCRefExpr *E) {
+TreeTransform<Derived>::TransformObjCImplctSetterGetterRefExpr(
+ ObjCImplctSetterGetterRefExpr *E) {
// FIXME: Implement this!
assert(false && "Cannot transform Objective-C expressions yet");
return SemaRef.Owned(E->Retain());
More information about the cfe-commits
mailing list