aboutsummaryrefslogtreecommitdiff
path: root/lib/Parse/ParseObjc.cpp
diff options
context:
space:
mode:
authorFariborz Jahanian <fjahanian@apple.com>2011-08-22 21:44:58 +0000
committerFariborz Jahanian <fjahanian@apple.com>2011-08-22 21:44:58 +0000
commit2f64cfe19e8bf6b6ba1660e38da8c421440457fe (patch)
tree89f512f4d615a1f2daf267576d03d53b5133a3f0 /lib/Parse/ParseObjc.cpp
parent7f2531cb41448852ec78de90fc1d3c0149c95d7d (diff)
objc refactoring - minor clean up.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138276 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Parse/ParseObjc.cpp')
-rw-r--r--lib/Parse/ParseObjc.cpp20
1 files changed, 8 insertions, 12 deletions
diff --git a/lib/Parse/ParseObjc.cpp b/lib/Parse/ParseObjc.cpp
index 7512bbc5ff..684d8edf89 100644
--- a/lib/Parse/ParseObjc.cpp
+++ b/lib/Parse/ParseObjc.cpp
@@ -199,9 +199,7 @@ Decl *Parser::ParseObjCAtInterfaceDeclaration(SourceLocation atLoc,
if (Tok.is(tok::l_brace))
ParseObjCClassInstanceVariables(CategoryType, tok::objc_private, atLoc);
- Actions.ActOnObjCContainerStartDefinition(CategoryType);
- ParseObjCInterfaceDeclList(tok::objc_not_keyword);
- Actions.ActOnObjCContainerFinishDefinition(CategoryType);
+ ParseObjCInterfaceDeclList(tok::objc_not_keyword, CategoryType);
return CategoryType;
}
// Parse a class interface.
@@ -243,9 +241,7 @@ Decl *Parser::ParseObjCAtInterfaceDeclaration(SourceLocation atLoc,
if (Tok.is(tok::l_brace))
ParseObjCClassInstanceVariables(ClsType, tok::objc_protected, atLoc);
- Actions.ActOnObjCContainerStartDefinition(ClsType);
- ParseObjCInterfaceDeclList(tok::objc_interface);
- Actions.ActOnObjCContainerFinishDefinition(ClsType);
+ ParseObjCInterfaceDeclList(tok::objc_interface, ClsType);
return ClsType;
}
@@ -317,14 +313,16 @@ struct Parser::ObjCPropertyCallback : FieldCallback {
/// @required
/// @optional
///
-void Parser::ParseObjCInterfaceDeclList(tok::ObjCKeywordKind contextKey) {
+void Parser::ParseObjCInterfaceDeclList(tok::ObjCKeywordKind contextKey,
+ Decl *CDecl) {
SmallVector<Decl *, 32> allMethods;
SmallVector<Decl *, 16> allProperties;
SmallVector<DeclGroupPtrTy, 8> allTUVariables;
tok::ObjCKeywordKind MethodImplKind = tok::objc_not_keyword;
SourceRange AtEnd;
-
+ Actions.ActOnObjCContainerStartDefinition(CDecl);
+
while (1) {
// If this is a method prototype, parse it.
if (Tok.is(tok::minus) || Tok.is(tok::plus)) {
@@ -461,6 +459,7 @@ void Parser::ParseObjCInterfaceDeclList(tok::ObjCKeywordKind contextKey) {
allMethods.data(), allMethods.size(),
allProperties.data(), allProperties.size(),
allTUVariables.data(), allTUVariables.size());
+ Actions.ActOnObjCContainerFinishDefinition(CDecl);
}
/// Parse property attribute declarations.
@@ -1292,10 +1291,7 @@ Decl *Parser::ParseObjCAtProtocolDeclaration(SourceLocation AtLoc,
ProtocolLocs.data(),
EndProtoLoc, attrs.getList());
-
- Actions.ActOnObjCContainerStartDefinition(ProtoType);
- ParseObjCInterfaceDeclList(tok::objc_protocol);
- Actions.ActOnObjCContainerFinishDefinition(ProtoType);
+ ParseObjCInterfaceDeclList(tok::objc_protocol, ProtoType);
return ProtoType;
}