diff options
author | Nico Weber <nicolasweber@gmx.de> | 2013-01-10 19:19:14 +0000 |
---|---|---|
committer | Nico Weber <nicolasweber@gmx.de> | 2013-01-10 19:19:14 +0000 |
commit | ed91bbaa8c4c92a1c94c9a7a5f4141551718cf6b (patch) | |
tree | 1f120c5e44c207bcf3fa215827cef3f44532e120 /lib/Format/Format.cpp | |
parent | 94fc6f15d99a16abe6c28a7baa3f2358450920d1 (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.cpp | 18 |
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) && |