summaryrefslogtreecommitdiffstats
path: root/clang/lib/Sema/SemaExpr.cpp
diff options
context:
space:
mode:
authorFariborz Jahanian <fjahanian@apple.com>2011-10-15 17:36:49 +0000
committerFariborz Jahanian <fjahanian@apple.com>2011-10-15 17:36:49 +0000
commit7c386f838aa63349cbea031a69ba528e265c1cc9 (patch)
treeb345fbdd1b3a0ee0def12a5ea72ca206035032cf /clang/lib/Sema/SemaExpr.cpp
parenta8e267b3980a5499dffc0eb6d3309c17564decff (diff)
downloadbcm5719-llvm-7c386f838aa63349cbea031a69ba528e265c1cc9.tar.gz
bcm5719-llvm-7c386f838aa63349cbea031a69ba528e265c1cc9.zip
obj-c++: allow the getter/setter to return/take parameters
by reference. // rdar://10188258 llvm-svn: 142075
Diffstat (limited to 'clang/lib/Sema/SemaExpr.cpp')
-rw-r--r--clang/lib/Sema/SemaExpr.cpp6
1 files changed, 4 insertions, 2 deletions
diff --git a/clang/lib/Sema/SemaExpr.cpp b/clang/lib/Sema/SemaExpr.cpp
index 170097cc59a..60f84183fae 100644
--- a/clang/lib/Sema/SemaExpr.cpp
+++ b/clang/lib/Sema/SemaExpr.cpp
@@ -7264,13 +7264,14 @@ void Sema::ConvertPropertyForLValue(ExprResult &LHS, ExprResult &RHS,
return;
}
}
- } else if (getLangOptions().ObjCAutoRefCount) {
+ } else {
const ObjCMethodDecl *setter
= PropRef->getExplicitProperty()->getSetterMethodDecl();
if (setter) {
ObjCMethodDecl::param_const_iterator P = setter->param_begin();
LHSTy = (*P)->getType();
- Consumed = (*P)->hasAttr<NSConsumedAttr>();
+ if (getLangOptions().ObjCAutoRefCount)
+ Consumed = (*P)->hasAttr<NSConsumedAttr>();
}
}
@@ -7285,6 +7286,7 @@ void Sema::ConvertPropertyForLValue(ExprResult &LHS, ExprResult &RHS,
checkRetainCycles(const_cast<Expr*>(PropRef->getBase()), RHS.get());
}
}
+ LHSTy = LHSTy.getNonReferenceType();
}
OpenPOWER on IntegriCloud