summaryrefslogtreecommitdiffstats
path: root/clang
diff options
context:
space:
mode:
authorFariborz Jahanian <fjahanian@apple.com>2010-01-07 18:18:32 +0000
committerFariborz Jahanian <fjahanian@apple.com>2010-01-07 18:18:32 +0000
commit0f3aecf27259cf2cc70b82f6d41780cb78df1991 (patch)
tree6307da7ee551d39c4a594f639cb7c59fd66a30ba /clang
parent49c8da95a3bd1d942cb358bff1a7bea162d23cad (diff)
downloadbcm5719-llvm-0f3aecf27259cf2cc70b82f6d41780cb78df1991.tar.gz
bcm5719-llvm-0f3aecf27259cf2cc70b82f6d41780cb78df1991.zip
Fix rewriting of ivars. Fixes radar 7490331.
llvm-svn: 92924
Diffstat (limited to 'clang')
-rw-r--r--clang/lib/Frontend/RewriteObjC.cpp5
-rw-r--r--clang/test/Rewriter/rewrite-ivar-use.m20
2 files changed, 23 insertions, 2 deletions
diff --git a/clang/lib/Frontend/RewriteObjC.cpp b/clang/lib/Frontend/RewriteObjC.cpp
index 7e354750076..44fa263cff8 100644
--- a/clang/lib/Frontend/RewriteObjC.cpp
+++ b/clang/lib/Frontend/RewriteObjC.cpp
@@ -1183,10 +1183,11 @@ Stmt *RewriteObjC::RewritePropertyGetter(ObjCPropertyRefExpr *PropRefExpr) {
Stmt *RewriteObjC::RewriteObjCIvarRefExpr(ObjCIvarRefExpr *IV,
SourceLocation OrigStart) {
ObjCIvarDecl *D = IV->getDecl();
+ const Expr *BaseExpr = IV->getBase();
if (CurMethodDef) {
- if (const PointerType *pType = IV->getBase()->getType()->getAs<PointerType>()) {
+ if (IV->isArrow()) {
ObjCInterfaceType *iFaceDecl =
- dyn_cast<ObjCInterfaceType>(pType->getPointeeType());
+ dyn_cast<ObjCInterfaceType>(BaseExpr->getType()->getPointeeType());
// lookup which class implements the instance variable.
ObjCInterfaceDecl *clsDeclared = 0;
iFaceDecl->getDecl()->lookupInstanceVariable(D->getIdentifier(),
diff --git a/clang/test/Rewriter/rewrite-ivar-use.m b/clang/test/Rewriter/rewrite-ivar-use.m
new file mode 100644
index 00000000000..9d6a0fa6bb8
--- /dev/null
+++ b/clang/test/Rewriter/rewrite-ivar-use.m
@@ -0,0 +1,20 @@
+// RUN: %clang_cc1 -rewrite-objc %s -o -
+// radar 7490331
+
+@interface Foo {
+ int a;
+ id b;
+}
+- (void)bar;
+- (void)baz:(id)q;
+@end
+
+@implementation Foo
+- (void)bar {
+ a = 42;
+ [self baz:b];
+}
+- (void)baz:(id)q {
+}
+@end
+
OpenPOWER on IntegriCloud