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...
 }