diff options
author | Anna Zaks <ganna@apple.com> | 2012-10-18 19:17:53 +0000 |
---|---|---|
committer | Anna Zaks <ganna@apple.com> | 2012-10-18 19:17:53 +0000 |
commit | 673d76b0bc31cddc357cf071aa55d21d32fb3f40 (patch) | |
tree | 7711f4b9f6eb9ddd3b4899a4a3037a5afbe7b761 /clang/lib/AST/DeclObjC.cpp | |
parent | e0586a574e8ab46c29952fe00044943bb52f34a1 (diff) | |
download | bcm5719-llvm-673d76b0bc31cddc357cf071aa55d21d32fb3f40.tar.gz bcm5719-llvm-673d76b0bc31cddc357cf071aa55d21d32fb3f40.zip |
Factor CollectClassPropertyImplementations out of Sema into AST
This would make it possible for the analyzer to use the function.
llvm-svn: 166210
Diffstat (limited to 'clang/lib/AST/DeclObjC.cpp')
-rw-r--r-- | clang/lib/AST/DeclObjC.cpp | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/clang/lib/AST/DeclObjC.cpp b/clang/lib/AST/DeclObjC.cpp index 2dbb353af37..5eb9cdc5dca 100644 --- a/clang/lib/AST/DeclObjC.cpp +++ b/clang/lib/AST/DeclObjC.cpp @@ -190,6 +190,18 @@ ObjCInterfaceDecl::FindPropertyVisibleInPrimaryClass( return 0; } +void ObjCInterfaceDecl::collectPropertiesToImplement(PropertyMap& PM) const { + for (ObjCContainerDecl::prop_iterator P = prop_begin(), + E = prop_end(); P != E; ++P) { + ObjCPropertyDecl *Prop = *P; + PM[Prop->getIdentifier()] = Prop; + } + for (ObjCInterfaceDecl::all_protocol_iterator + PI = all_referenced_protocol_begin(), + E = all_referenced_protocol_end(); PI != E; ++PI) + (*PI)->collectPropertiesToImplement(PM); +} + void ObjCInterfaceDecl::mergeClassExtensionProtocolList( ObjCProtocolDecl *const* ExtList, unsigned ExtNum, ASTContext &C) @@ -1313,6 +1325,20 @@ void ObjCProtocolDecl::startDefinition() { RD->Data = this->Data; } +void ObjCProtocolDecl::collectPropertiesToImplement(PropertyMap& PM) const { + for (ObjCProtocolDecl::prop_iterator P = prop_begin(), + E = prop_end(); P != E; ++P) { + ObjCPropertyDecl *Prop = *P; + // Insert into PM if not there already. + PM.insert(std::make_pair(Prop->getIdentifier(), Prop)); + } + // Scan through protocol's protocols. + for (ObjCProtocolDecl::protocol_iterator PI = protocol_begin(), + E = protocol_end(); PI != E; ++PI) + (*PI)->collectPropertiesToImplement(PM); +} + + //===----------------------------------------------------------------------===// // ObjCCategoryDecl //===----------------------------------------------------------------------===// |