aboutsummaryrefslogtreecommitdiff
path: root/lib/Format/Format.cpp
diff options
context:
space:
mode:
authorNico Weber <nicolasweber@gmx.de>2013-01-10 19:19:14 +0000
committerNico Weber <nicolasweber@gmx.de>2013-01-10 19:19:14 +0000
commited91bbaa8c4c92a1c94c9a7a5f4141551718cf6b (patch)
tree1f120c5e44c207bcf3fa215827cef3f44532e120 /lib/Format/Format.cpp
parent94fc6f15d99a16abe6c28a7baa3f2358450920d1 (diff)
Formatter: Add space before '(' in @implemenation, @interface, @protocol lines
The first token in @implementation, @interface, and @protocol lines is now marked TT_ObjCDecl, and lines starting with a TT_ObjCDecl token are now marked LT_ObjCMethodDecl. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@172093 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Format/Format.cpp')
-rw-r--r--lib/Format/Format.cpp18
1 files changed, 16 insertions, 2 deletions
diff --git a/lib/Format/Format.cpp b/lib/Format/Format.cpp
index a167834a4e..406daac7a6 100644
--- a/lib/Format/Format.cpp
+++ b/lib/Format/Format.cpp
@@ -37,6 +37,7 @@ enum TokenType {
TT_DirectorySeparator,
TT_LineComment,
TT_ObjCBlockLParen,
+ TT_ObjCDecl,
TT_ObjCMethodSpecifier,
TT_OverloadedOperator,
TT_PointerOrReference,
@@ -53,6 +54,7 @@ enum LineType {
LT_Other,
LT_PreprocessorDirective,
LT_VirtualFunctionDecl,
+ LT_ObjCDecl, // An @interface, @implementation, or @protocol line.
LT_ObjCMethodDecl
};
@@ -835,6 +837,8 @@ public:
if (RootToken.Type == TT_ObjCMethodSpecifier)
CurrentLineType = LT_ObjCMethodDecl;
+ else if (RootToken.Type == TT_ObjCDecl)
+ CurrentLineType = LT_ObjCDecl;
if (!RootToken.Children.empty())
calculateExtraInformation(RootToken.Children[0]);
@@ -879,6 +883,15 @@ private:
Current.Parent->Type == TT_TemplateCloser)) {
// FIXME: We need to get smarter and understand more cases of casts.
Current.Type = TT_CastRParen;
+ } else if (Current.is(tok::at) && Current.Children.size()) {
+ switch (Current.Children[0].FormatTok.Tok.getObjCKeywordID()) {
+ case tok::objc_interface:
+ case tok::objc_implementation:
+ case tok::objc_protocol:
+ Current.Type = TT_ObjCDecl;
+ default:
+ break;
+ }
}
}
@@ -997,8 +1010,9 @@ private:
if (Left.is(tok::l_paren))
return false;
if (Right.is(tok::l_paren)) {
- return Left.is(tok::kw_if) || Left.is(tok::kw_for) ||
- Left.is(tok::kw_while) || Left.is(tok::kw_switch) ||
+ return CurrentLineType == LT_ObjCDecl || Left.is(tok::kw_if) ||
+ Left.is(tok::kw_for) || Left.is(tok::kw_while) ||
+ Left.is(tok::kw_switch) ||
Left.is(tok::kw_return) || Left.is(tok::kw_catch);
}
if (Left.is(tok::at) &&