diff options
| author | Fariborz Jahanian <fjahanian@apple.com> | 2007-09-13 20:56:13 +0000 |
|---|---|---|
| committer | Fariborz Jahanian <fjahanian@apple.com> | 2007-09-13 20:56:13 +0000 |
| commit | 6812cbb230884c132ec24f5a01111769f783f5bd (patch) | |
| tree | dd10139c432683013d5a98bdafe551e4ee2dc7c1 /clang/Sema | |
| parent | 9324db12b20a55b3c89b2b2274af2495326e8502 (diff) | |
| download | bcm5719-llvm-6812cbb230884c132ec24f5a01111769f783f5bd.tar.gz bcm5719-llvm-6812cbb230884c132ec24f5a01111769f783f5bd.zip | |
Patch for collecting ivars before running action on them.
llvm-svn: 41932
Diffstat (limited to 'clang/Sema')
| -rw-r--r-- | clang/Sema/Sema.h | 5 | ||||
| -rw-r--r-- | clang/Sema/SemaDecl.cpp | 47 |
2 files changed, 29 insertions, 23 deletions
diff --git a/clang/Sema/Sema.h b/clang/Sema/Sema.h index c4d1e4fa7f7..2cc11487121 100644 --- a/clang/Sema/Sema.h +++ b/clang/Sema/Sema.h @@ -369,8 +369,9 @@ public: tok::TokenKind MethodType, TypeTy *ReturnType, IdentifierInfo *SelectorName, AttributeList *AttrList); - virtual void ObjcAddInstanceVariable(DeclTy *ClassDec, DeclTy *Ivar, - tok::ObjCKeywordKind visibility); + virtual void ObjcAddInstanceVariable(DeclTy *ClassDec, DeclTy **Ivar, + unsigned numIvars, + tok::ObjCKeywordKind *visibility); private: // UsualUnaryConversions - promotes integers (C99 6.3.1.1p2) and converts // functions and arrays to their respective pointers (C99 6.3.2.1). diff --git a/clang/Sema/SemaDecl.cpp b/clang/Sema/SemaDecl.cpp index e997a050aff..02d93504d3e 100644 --- a/clang/Sema/SemaDecl.cpp +++ b/clang/Sema/SemaDecl.cpp @@ -875,31 +875,36 @@ Sema::DeclTy *Sema::ObjcStartClassInterface(SourceLocation AtInterfaceLoc, return IDecl; } -void Sema::ObjcAddInstanceVariable(DeclTy *ClassDecl, DeclTy *Ivar, - tok::ObjCKeywordKind visibility) { - assert((ClassDecl && Ivar) && "missing class or instance variable"); +void Sema::ObjcAddInstanceVariable(DeclTy *ClassDecl, DeclTy **Ivar, + unsigned numIvars, + tok::ObjCKeywordKind *visibility) { + assert((ClassDecl && numIvars) && "missing class or instance variable"); ObjcInterfaceDecl *OInterface = dyn_cast<ObjcInterfaceDecl>( static_cast<Decl *>(ClassDecl)); - ObjcIvarDecl *OIvar = dyn_cast<ObjcIvarDecl>(static_cast<Decl *>(Ivar)); + assert (OInterface && "mistyped class"); + for (unsigned i = 0; i != numIvars; ++i) { + ObjcIvarDecl *OIvar = dyn_cast<ObjcIvarDecl>(static_cast<Decl *>(Ivar[i])); + tok::ObjCKeywordKind ivarVisibility = visibility[i]; - assert((OInterface && OIvar) && "mistyped class or instance variable"); + assert(OIvar && "mistyped instance variable"); - switch (visibility) { - case tok::objc_private: - OIvar->setAccessControl(ObjcIvarDecl::Private); - break; - case tok::objc_public: - OIvar->setAccessControl(ObjcIvarDecl::Public); - break; - case tok::objc_protected: - OIvar->setAccessControl(ObjcIvarDecl::Protected); - break; - case tok::objc_package: - OIvar->setAccessControl(ObjcIvarDecl::Package); - break; - default: - OIvar->setAccessControl(ObjcIvarDecl::None); - break; + switch (ivarVisibility) { + case tok::objc_private: + OIvar->setAccessControl(ObjcIvarDecl::Private); + break; + case tok::objc_public: + OIvar->setAccessControl(ObjcIvarDecl::Public); + break; + case tok::objc_protected: + OIvar->setAccessControl(ObjcIvarDecl::Protected); + break; + case tok::objc_package: + OIvar->setAccessControl(ObjcIvarDecl::Package); + break; + default: + OIvar->setAccessControl(ObjcIvarDecl::None); + break; + } } // FIXME: add to the class... } |

