Patch for collecting ivars before running action on them.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41932 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/Sema/SemaDecl.cpp b/Sema/SemaDecl.cpp
index e997a05..02d9350 100644
--- a/Sema/SemaDecl.cpp
+++ b/Sema/SemaDecl.cpp
@@ -875,31 +875,36 @@
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...
}