diff options
author | Douglas Gregor <dgregor@apple.com> | 2010-04-19 20:09:36 +0000 |
---|---|---|
committer | Douglas Gregor <dgregor@apple.com> | 2010-04-19 20:09:36 +0000 |
commit | ed46442adea496dfb01dbbe53ace583d5614e79a (patch) | |
tree | 4bcd5fefd84cc7cfc92c15b0ebd43fa81fd50bc3 /lib/Sema/SemaExprObjC.cpp | |
parent | d7174f2924a18e6e6754575d80db405aac9168c8 (diff) |
When normal name lookup to disambiguiate an Objective-C message send
fails to find anything, perform ivar lookup and, if we find one,
consider this an instance message.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101810 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Sema/SemaExprObjC.cpp')
-rw-r--r-- | lib/Sema/SemaExprObjC.cpp | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/lib/Sema/SemaExprObjC.cpp b/lib/Sema/SemaExprObjC.cpp index c0e04fd6d4..ad95f00d24 100644 --- a/lib/Sema/SemaExprObjC.cpp +++ b/lib/Sema/SemaExprObjC.cpp @@ -505,6 +505,16 @@ Sema::ObjCMessageKind Sema::getObjCMessageKind(Scope *S, switch (Result.getResultKind()) { case LookupResult::NotFound: + // Normal name lookup didn't find anything. If we're in an + // Objective-C method, look for ivars. If we find one, we're done! + // FIXME: This is a hack. Ivar lookup should be part of normal lookup. + if (ObjCMethodDecl *Method = getCurMethodDecl()) { + ObjCInterfaceDecl *ClassDeclared; + if (Method->getClassInterface()->lookupInstanceVariable(Name, + ClassDeclared)) + return ObjCInstanceMessage; + } + // Break out; we'll perform typo correction below. break; |