]> granicus.if.org Git - clang/commitdiff
Fix <rdar://problem/6655054> clang issues bogus error on property usage in a dot...
authorSteve Naroff <snaroff@apple.com>
Wed, 11 Mar 2009 15:15:01 +0000 (15:15 +0000)
committerSteve Naroff <snaroff@apple.com>
Wed, 11 Mar 2009 15:15:01 +0000 (15:15 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66659 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Sema/SemaExpr.cpp
test/SemaObjC/property-9-impl-method.m

index 9534f7354f3ee36eacbe2de75e91295dd5eee9a9..9a86d65f9a0657177920d9d4c3504bd80b54d3f2 100644 (file)
@@ -1866,11 +1866,9 @@ Sema::ActOnMemberReferenceExpr(Scope *S, ExprArg Base, SourceLocation OpLoc,
 
     // If this reference is in an @implementation, check for 'private' methods.
     if (!Getter)
-      if (ObjCMethodDecl *CurMeth = getCurMethodDecl())
-        if (ObjCInterfaceDecl *ClassDecl = CurMeth->getClassInterface())
-          if (ObjCImplementationDecl *ImpDecl =
-              ObjCImplementations[ClassDecl->getIdentifier()])
-            Getter = ImpDecl->getInstanceMethod(Sel);
+      if (ObjCImplementationDecl *ImpDecl =
+          ObjCImplementations[IFace->getIdentifier()])
+        Getter = ImpDecl->getInstanceMethod(Sel);
 
     // Look through local category implementations associated with the class.
     if (!Getter) {
@@ -1893,11 +1891,9 @@ Sema::ActOnMemberReferenceExpr(Scope *S, ExprArg Base, SourceLocation OpLoc,
     if (!Setter) {
       // If this reference is in an @implementation, also check for 'private'
       // methods.
-      if (ObjCMethodDecl *CurMeth = getCurMethodDecl())
-        if (ObjCInterfaceDecl *ClassDecl = CurMeth->getClassInterface())
-          if (ObjCImplementationDecl *ImpDecl =
-                ObjCImplementations[ClassDecl->getIdentifier()])
-            Setter = ImpDecl->getInstanceMethod(SetterSel);
+      if (ObjCImplementationDecl *ImpDecl =
+          ObjCImplementations[IFace->getIdentifier()])
+        Setter = ImpDecl->getInstanceMethod(SetterSel);
     }
     // Look through local category implementations associated with the class.
     if (!Setter) {
index e9e81bd55f5eb1417452e486ca8477d38bd2bd27..e684c5ecae3a9fa844f67cc5226040f419b52f70 100644 (file)
@@ -62,3 +62,33 @@ NSSize minimumSize;
 }
 @end
 
+@class NSImage;
+
+@interface XCImageArchiveEntry : NSObject
+{
+  NSImage *_cachedImage;
+}
+
+@end
+
+@implementation XCImageArchiveEntry
+
+- (NSImage *)image
+{
+  return _cachedImage;
+}
+
+@end
+
+@interface XCImageArchive : NSObject
+@end
+
+@implementation XCImageArchive
+
+- (NSImage *)imageNamed:(NSString *)name
+{
+    XCImageArchiveEntry * entry;
+    return entry ? entry.image : ((void *)0);
+}
+
+@end