diff options
author | Steve Naroff <snaroff@apple.com> | 2009-03-11 15:15:01 +0000 |
---|---|---|
committer | Steve Naroff <snaroff@apple.com> | 2009-03-11 15:15:01 +0000 |
commit | f178728e8cb972a8a8923ba75b4ef7367b641626 (patch) | |
tree | c078708af3a3b26ddf8571471e25901baaa848bf | |
parent | 1ca6694b5b37470ac736737a26da09b088a18d5d (diff) |
Fix <rdar://problem/6655054> clang issues bogus error on property usage in a dot-syntax.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66659 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | lib/Sema/SemaExpr.cpp | 16 | ||||
-rw-r--r-- | test/SemaObjC/property-9-impl-method.m | 30 |
2 files changed, 36 insertions, 10 deletions
diff --git a/lib/Sema/SemaExpr.cpp b/lib/Sema/SemaExpr.cpp index 9534f7354f..9a86d65f9a 100644 --- a/lib/Sema/SemaExpr.cpp +++ b/lib/Sema/SemaExpr.cpp @@ -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) { diff --git a/test/SemaObjC/property-9-impl-method.m b/test/SemaObjC/property-9-impl-method.m index e9e81bd55f..e684c5ecae 100644 --- a/test/SemaObjC/property-9-impl-method.m +++ b/test/SemaObjC/property-9-impl-method.m @@ -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 |