diff options
| author | Fariborz Jahanian <fjahanian@apple.com> | 2009-06-05 18:16:35 +0000 |
|---|---|---|
| committer | Fariborz Jahanian <fjahanian@apple.com> | 2009-06-05 18:16:35 +0000 |
| commit | 68453834269ac91e14020f0a71bf37cd224d4ab4 (patch) | |
| tree | 2d2a76ddb151ea767a825d8ba8af2d32be8965a3 /clang/lib/AST | |
| parent | c154c1185c073509c26d05e418b170749d70666a (diff) | |
| download | bcm5719-llvm-68453834269ac91e14020f0a71bf37cd224d4ab4.tar.gz bcm5719-llvm-68453834269ac91e14020f0a71bf37cd224d4ab4.zip | |
Use of DeclContext for objc's ivars. No functionality
change. More to follow.
llvm-svn: 72951
Diffstat (limited to 'clang/lib/AST')
| -rw-r--r-- | clang/lib/AST/DeclObjC.cpp | 22 |
1 files changed, 16 insertions, 6 deletions
diff --git a/clang/lib/AST/DeclObjC.cpp b/clang/lib/AST/DeclObjC.cpp index f4bb8957307..21aefdd567b 100644 --- a/clang/lib/AST/DeclObjC.cpp +++ b/clang/lib/AST/DeclObjC.cpp @@ -42,6 +42,19 @@ void ObjCListBase::set(void *const* InList, unsigned Elts, ASTContext &Ctx) { // ObjCInterfaceDecl //===----------------------------------------------------------------------===// +/// getIvarDecl - This method looks up an ivar in this ContextDecl. +/// +ObjCIvarDecl * +ObjCContainerDecl::getIvarDecl(ASTContext &Context, IdentifierInfo *Id) const { + lookup_const_iterator Ivar, IvarEnd; + for (llvm::tie(Ivar, IvarEnd) = lookup(Context, Id); + Ivar != IvarEnd; ++Ivar) { + if (ObjCIvarDecl *ivar = dyn_cast<ObjCIvarDecl>(*Ivar)) + return ivar; + } + return 0; +} + // Get the local instance method declared in this interface. ObjCMethodDecl * ObjCContainerDecl::getInstanceMethod(ASTContext &Context, Selector Sel) const { @@ -139,12 +152,9 @@ ObjCIvarDecl *ObjCInterfaceDecl::lookupInstanceVariable( ASTContext &Context, IdentifierInfo *ID, ObjCInterfaceDecl *&clsDeclared) { ObjCInterfaceDecl* ClassDecl = this; while (ClassDecl != NULL) { - for (ivar_iterator I = ClassDecl->ivar_begin(), E = ClassDecl->ivar_end(); - I != E; ++I) { - if ((*I)->getIdentifier() == ID) { - clsDeclared = ClassDecl; - return *I; - } + if (ObjCIvarDecl *I = ClassDecl->getIvarDecl(Context, ID)) { + clsDeclared = ClassDecl; + return I; } // look into properties. for (ObjCInterfaceDecl::prop_iterator I = ClassDecl->prop_begin(Context), |

