an objc method. Fixes // rdar://
9181463
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@128389
91177308-0d34-0410-b5e6-
96231b3b80d8
}
bool Sema::isSelfExpr(Expr *RExpr) {
+ // 'self' is objc 'self' in an objc method only.
+ if (!isa<ObjCMethodDecl>(CurContext))
+ return false;
if (ImplicitCastExpr *ICE = dyn_cast<ImplicitCastExpr>(RExpr))
if (ICE->getCastKind() == CK_LValueToRValue)
RExpr = ICE->getSubExpr();
--- /dev/null
+// RUN: %clang_cc1 -fsyntax-only -verify %s
+// rdar://9181463
+
+typedef struct objc_class *Class;
+
+typedef struct objc_object {
+ Class isa;
+} *id;
+
+@interface NSObject
++ (id) alloc;
+@end
+
+
+void foo(Class self) {
+ [self alloc];
+}
+
+void bar(Class self) {
+ Class y = self;
+ [y alloc];
+}
+