Patch for:
1) objc ivar processing is split out of ActOnField into its own ActOnIvar method.
2) the new objc ivar action takes visibility info directly, eliminating
AllVisibilities in ParseObjCClassInstanceVariables.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49506 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Parse/ParseObjc.cpp b/lib/Parse/ParseObjc.cpp
index 5a9b980..eb3c5df 100644
--- a/lib/Parse/ParseObjc.cpp
+++ b/lib/Parse/ParseObjc.cpp
@@ -397,9 +397,9 @@
for (unsigned i = 0, e = FieldDeclarators.size(); i != e; ++i) {
FieldDeclarator &FD = FieldDeclarators[i];
// Install the declarator into interfaceDecl.
- DeclTy *Field = Actions.ActOnField(CurScope, interfaceDecl,
+ DeclTy *Field = Actions.ActOnIvar(CurScope,
DS.getSourceRange().getBegin(),
- FD.D, FD.BitfieldSize);
+ FD.D, FD.BitfieldSize);
PropertyDecls.push_back(Field);
}
@@ -772,7 +772,6 @@
SourceLocation atLoc) {
assert(Tok.is(tok::l_brace) && "expected {");
llvm::SmallVector<DeclTy*, 32> AllIvarDecls;
- llvm::SmallVector<tok::ObjCKeywordKind, 32> AllVisibilities;
llvm::SmallVector<FieldDeclarator, 8> FieldDeclarators;
SourceLocation LBraceLoc = ConsumeBrace(); // the "{"
@@ -815,11 +814,10 @@
for (unsigned i = 0, e = FieldDeclarators.size(); i != e; ++i) {
FieldDeclarator &FD = FieldDeclarators[i];
// Install the declarator into interfaceDecl.
- DeclTy *Field = Actions.ActOnField(CurScope, interfaceDecl,
+ DeclTy *Field = Actions.ActOnIvar(CurScope,
DS.getSourceRange().getBegin(),
- FD.D, FD.BitfieldSize);
+ FD.D, FD.BitfieldSize, visibility);
AllIvarDecls.push_back(Field);
- AllVisibilities.push_back(visibility);
}
if (Tok.is(tok::semi)) {
@@ -838,7 +836,7 @@
// for code rewriting tools that need to be aware of the empty list.
Actions.ActOnFields(CurScope, atLoc, interfaceDecl,
&AllIvarDecls[0], AllIvarDecls.size(),
- LBraceLoc, RBraceLoc, &AllVisibilities[0]);
+ LBraceLoc, RBraceLoc);
return;
}