From d133a86aa3e9031804c1b3dc630b6c5b72f1008c Mon Sep 17 00:00:00 2001 From: Ted Kremenek Date: Mon, 15 Mar 2010 20:30:07 +0000 Subject: [PATCH] Move method FindPropertyVisibleInPrimaryClass() from ObjCContainerDecl to ObjCInterfaceDecl. Also change this method to lookup property declarations using DeclContext::lookup(). llvm-svn: 98574 --- clang/include/clang/AST/DeclObjC.h | 7 ++++--- clang/lib/AST/DeclObjC.cpp | 19 +++++++++---------- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/clang/include/clang/AST/DeclObjC.h b/clang/include/clang/AST/DeclObjC.h index 04867db82715..a1f565341e2c 100644 --- a/clang/include/clang/AST/DeclObjC.h +++ b/clang/include/clang/AST/DeclObjC.h @@ -381,8 +381,6 @@ public: ObjCIvarDecl *getIvarDecl(IdentifierInfo *Id) const; ObjCPropertyDecl *FindPropertyDeclaration(IdentifierInfo *PropertyId) const; - ObjCPropertyDecl *FindPropertyVisibleInPrimaryClass( - IdentifierInfo *PropertyId) const; // Marks the end of the container. SourceRange getAtEndRange() const { @@ -535,7 +533,10 @@ public: } ObjCCategoryDecl* getClassExtension() const; - + + ObjCPropertyDecl + *FindPropertyVisibleInPrimaryClass(IdentifierInfo *PropertyId) const; + /// isSuperClassOf - Return true if this class is the specified class or is a /// super class of the specified interface class. bool isSuperClassOf(const ObjCInterfaceDecl *I) const { diff --git a/clang/lib/AST/DeclObjC.cpp b/clang/lib/AST/DeclObjC.cpp index 6a03360d1614..7d1033d4f15f 100644 --- a/clang/lib/AST/DeclObjC.cpp +++ b/clang/lib/AST/DeclObjC.cpp @@ -159,22 +159,21 @@ ObjCContainerDecl::FindPropertyDeclaration(IdentifierInfo *PropertyId) const { /// FindPropertyVisibleInPrimaryClass - Finds declaration of the property /// with name 'PropertyId' in the primary class; including those in protocols -/// (direct or indirect) used by the promary class. -/// FIXME: Convert to DeclContext lookup... +/// (direct or indirect) used by the primary class. /// ObjCPropertyDecl * -ObjCContainerDecl::FindPropertyVisibleInPrimaryClass( +ObjCInterfaceDecl::FindPropertyVisibleInPrimaryClass( IdentifierInfo *PropertyId) const { - assert(isa(this) && "FindPropertyVisibleInPrimaryClass"); - for (prop_iterator I = prop_begin(), E = prop_end(); I != E; ++I) - if ((*I)->getIdentifier() == PropertyId) - return *I; - const ObjCInterfaceDecl *OID = dyn_cast(this); + if (ObjCPropertyDecl *PD = + ObjCPropertyDecl::findPropertyDecl(cast(this), PropertyId)) + return PD; + // Look through protocols. - for (ObjCInterfaceDecl::protocol_iterator I = OID->protocol_begin(), - E = OID->protocol_end(); I != E; ++I) + for (ObjCInterfaceDecl::protocol_iterator + I = protocol_begin(), E = protocol_end(); I != E; ++I) if (ObjCPropertyDecl *P = (*I)->FindPropertyDeclaration(PropertyId)) return P; + return 0; }