summaryrefslogtreecommitdiffstats
path: root/clang/Sema
diff options
context:
space:
mode:
authorFariborz Jahanian <fjahanian@apple.com>2007-09-13 20:56:13 +0000
committerFariborz Jahanian <fjahanian@apple.com>2007-09-13 20:56:13 +0000
commit6812cbb230884c132ec24f5a01111769f783f5bd (patch)
treedd10139c432683013d5a98bdafe551e4ee2dc7c1 /clang/Sema
parent9324db12b20a55b3c89b2b2274af2495326e8502 (diff)
downloadbcm5719-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.h5
-rw-r--r--clang/Sema/SemaDecl.cpp47
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...
}
OpenPOWER on IntegriCloud