summaryrefslogtreecommitdiffstats
path: root/clang/lib/Sema/SemaDecl.cpp
diff options
context:
space:
mode:
authorFariborz Jahanian <fjahanian@apple.com>2010-02-22 23:04:20 +0000
committerFariborz Jahanian <fjahanian@apple.com>2010-02-22 23:04:20 +0000
commit4c172c63e510647e34110c4d5fc23c71c1905b96 (patch)
tree8d5398880573ca2d12f32db47c2f09aa5d660e18 /clang/lib/Sema/SemaDecl.cpp
parent017a505716decf1b8601d00fbfb7db35b48e9466 (diff)
downloadbcm5719-llvm-4c172c63e510647e34110c4d5fc23c71c1905b96.tar.gz
bcm5719-llvm-4c172c63e510647e34110c4d5fc23c71c1905b96.zip
Early support for declaring ivars in class extensions. wip.
llvm-svn: 96819
Diffstat (limited to 'clang/lib/Sema/SemaDecl.cpp')
-rw-r--r--clang/lib/Sema/SemaDecl.cpp13
1 files changed, 13 insertions, 0 deletions
diff --git a/clang/lib/Sema/SemaDecl.cpp b/clang/lib/Sema/SemaDecl.cpp
index c59e8bad667..0be3841ad5a 100644
--- a/clang/lib/Sema/SemaDecl.cpp
+++ b/clang/lib/Sema/SemaDecl.cpp
@@ -5682,6 +5682,19 @@ void Sema::ActOnFields(Scope* S,
// Only it is in implementation's lexical context.
ClsFields[I]->setLexicalDeclContext(IMPDecl);
CheckImplementationIvars(IMPDecl, ClsFields, RecFields.size(), RBrac);
+ } else if (ObjCCategoryDecl *CDecl =
+ dyn_cast<ObjCCategoryDecl>(EnclosingDecl)) {
+ if (!LangOpts.ObjCNonFragileABI2 || !CDecl->IsClassExtension())
+ Diag(LBrac, diag::err_misplaced_ivar);
+ else {
+ // FIXME. Class extension does not have a LocEnd field.
+ // CDecl->setLocEnd(RBrac);
+ // Add ivar's to class extension's DeclContext.
+ for (unsigned i = 0, e = RecFields.size(); i != e; ++i) {
+ ClsFields[i]->setLexicalDeclContext(CDecl);
+ CDecl->addDecl(ClsFields[i]);
+ }
+ }
}
}
OpenPOWER on IntegriCloud