summaryrefslogtreecommitdiffstats
path: root/clang
diff options
context:
space:
mode:
Diffstat (limited to 'clang')
-rw-r--r--clang/lib/Format/ContinuationIndenter.cpp18
-rw-r--r--clang/unittests/Format/FormatTest.cpp10
-rw-r--r--clang/unittests/Format/FormatTestObjC.cpp37
3 files changed, 25 insertions, 40 deletions
diff --git a/clang/lib/Format/ContinuationIndenter.cpp b/clang/lib/Format/ContinuationIndenter.cpp
index 167b8822a0d..75b13270325 100644
--- a/clang/lib/Format/ContinuationIndenter.cpp
+++ b/clang/lib/Format/ContinuationIndenter.cpp
@@ -26,6 +26,13 @@
namespace clang {
namespace format {
+// Returns true if a TT_SelectorName should be indented when wrapped,
+// false otherwise.
+static bool shouldIndentWrappedSelectorName(const FormatStyle &Style,
+ LineType LineType) {
+ return Style.IndentWrappedFunctionNames || LineType == LT_ObjCMethodDecl;
+}
+
// Returns the length of everything up to the first possible line break after
// the ), ], } or > matching \c Tok.
static unsigned getLengthToMatchingParen(const FormatToken &Tok) {
@@ -698,7 +705,7 @@ unsigned ContinuationIndenter::addTokenOnNewLine(LineState &State,
State.Stack.back().AlignColons = false;
} else {
State.Stack.back().ColonPos =
- (Style.IndentWrappedFunctionNames
+ (shouldIndentWrappedSelectorName(Style, State.Line->Type)
? std::max(State.Stack.back().Indent,
State.FirstIndent + Style.ContinuationIndentWidth)
: State.Stack.back().Indent) +
@@ -897,7 +904,7 @@ unsigned ContinuationIndenter::getNewLineColumn(const LineState &State) {
if (NextNonComment->is(TT_SelectorName)) {
if (!State.Stack.back().ObjCSelectorNameFound) {
unsigned MinIndent = State.Stack.back().Indent;
- if (Style.IndentWrappedFunctionNames)
+ if (shouldIndentWrappedSelectorName(Style, State.Line->Type))
MinIndent = std::max(MinIndent,
State.FirstIndent + Style.ContinuationIndentWidth);
// If LongestObjCSelectorName is 0, we are indenting the first
@@ -1000,13 +1007,8 @@ unsigned ContinuationIndenter::moveStateToNextToken(LineState &State,
if (Current.isMemberAccess())
State.Stack.back().StartOfFunctionCall =
!Current.NextOperator ? 0 : State.Column;
- if (Current.is(TT_SelectorName)) {
+ if (Current.is(TT_SelectorName))
State.Stack.back().ObjCSelectorNameFound = true;
- if (Style.IndentWrappedFunctionNames) {
- State.Stack.back().Indent =
- State.FirstIndent + Style.ContinuationIndentWidth;
- }
- }
if (Current.is(TT_CtorInitializerColon) &&
Style.BreakConstructorInitializers != FormatStyle::BCIS_AfterColon) {
// Indent 2 from the column, so:
diff --git a/clang/unittests/Format/FormatTest.cpp b/clang/unittests/Format/FormatTest.cpp
index 4abf978b721..d1869d2494a 100644
--- a/clang/unittests/Format/FormatTest.cpp
+++ b/clang/unittests/Format/FormatTest.cpp
@@ -7678,16 +7678,18 @@ TEST_F(FormatTest, FormatForObjectiveCMethodDecls) {
// When the function name has to be wrapped.
FormatStyle Style = getLLVMStyle();
+ // ObjC ignores IndentWrappedFunctionNames when wrapping methods
+ // and always indents instead.
Style.IndentWrappedFunctionNames = false;
verifyFormat("- (SomeLooooooooooooooooooooongType *)\n"
- "veryLooooooooooongName:(NSString)aaaaaaaaaaaaaa\n"
- " anotherName:(NSString)bbbbbbbbbbbbbb {\n"
+ " veryLooooooooooongName:(NSString)aaaaaaaaaaaaaa\n"
+ " anotherName:(NSString)bbbbbbbbbbbbbb {\n"
"}",
Style);
Style.IndentWrappedFunctionNames = true;
verifyFormat("- (SomeLooooooooooooooooooooongType *)\n"
- " veryLooooooooooongName:(NSString)aaaaaaaaaaaaaa\n"
- " anotherName:(NSString)bbbbbbbbbbbbbb {\n"
+ " veryLooooooooooongName:(NSString)cccccccccccccc\n"
+ " anotherName:(NSString)dddddddddddddd {\n"
"}",
Style);
diff --git a/clang/unittests/Format/FormatTestObjC.cpp b/clang/unittests/Format/FormatTestObjC.cpp
index fe86cfe8ce9..ded4607334e 100644
--- a/clang/unittests/Format/FormatTestObjC.cpp
+++ b/clang/unittests/Format/FormatTestObjC.cpp
@@ -536,28 +536,25 @@ TEST_F(FormatTestObjC, FormatObjCMethodDeclarations) {
" ofSize:(size_t)height\n"
" :(size_t)width;");
Style.ColumnLimit = 40;
- // Make sure selectors with 0, 1, or more arguments are not indented
- // when IndentWrappedFunctionNames is false.
- Style.IndentWrappedFunctionNames = false;
+ // Make sure selectors with 0, 1, or more arguments are indented when wrapped.
verifyFormat("- (aaaaaaaaaaaaaaaaaaaaaaaaaaaaa)\n"
- "aaaaaaaaaaaaaaaaaaaaaaaaaaaa;\n");
+ " aaaaaaaaaaaaaaaaaaaaaaaaaaaa;\n");
verifyFormat("- (aaaaaaaaaaaaaaaaaaaaaaaaaaaaa)\n"
- "aaaaaaaaaaaaaaaaaaaaaaaaaaaa:(int)a;\n");
+ " aaaaaaaaaaaaaaaaaaaaaaaaaaaa:(int)a;\n");
verifyFormat("- (aaaaaaaaaaaaaaaaaaaaaaaaaaaaa)\n"
- "aaaaaaaaaaaaaaaaaaaaaaaaaaaa:(int)a\n"
- "aaaaaaaaaaaaaaaaaaaaaaaaaaaa:(int)a;\n");
+ " aaaaaaaaaaaaaaaaaaaaaaaaaaaa:(int)a\n"
+ " aaaaaaaaaaaaaaaaaaaaaaaaaaaa:(int)a;\n");
verifyFormat("- (aaaaaaaaaaaaaaaaaaaaaaaaaaaaa)\n"
- " aaaaaaaaaaaaaaaaaaaaaaaaaaa:(int)a\n"
- "aaaaaaaaaaaaaaaaaaaaaaaaaaaa:(int)a;\n");
+ " aaaaaaaaaaaaaaaaaaaaaaaaaaa:(int)a\n"
+ " aaaaaaaaaaaaaaaaaaaaaaaaaaaa:(int)a;\n");
verifyFormat("- (aaaaaaaaaaaaaaaaaaaaaaaaaaaaa)\n"
- "aaaaaaaaaaaaaaaaaaaaaaaaaaaa:(int)a\n"
- " aaaaaaaaaaaaaaaaaaaaaaaaaaa:(int)a;\n");
+ " aaaaaaaaaaaaaaaaaaaaaaaaaaaa:(int)a\n"
+ " aaaaaaaaaaaaaaaaaaaaaaaaaaa:(int)a;\n");
// Continuation indent width should win over aligning colons if the function
// name is long.
Style = getGoogleStyle(FormatStyle::LK_ObjC);
Style.ColumnLimit = 40;
- Style.IndentWrappedFunctionNames = true;
verifyFormat("- (void)shortf:(GTMFoo *)theFoo\n"
" dontAlignNamef:(NSRect)theRect {\n"
"}");
@@ -567,22 +564,6 @@ TEST_F(FormatTestObjC, FormatObjCMethodDeclarations) {
" aShortf:(NSRect)theRect {\n"
"}");
- // Make sure selectors with 0, 1, or more arguments are indented
- // when IndentWrappedFunctionNames is true.
- verifyFormat("- (aaaaaaaaaaaaaaaaaaaaaaaaaaaaa)\n"
- " aaaaaaaaaaaaaaaaaaaaaaaaaaaa;\n");
- verifyFormat("- (aaaaaaaaaaaaaaaaaaaaaaaaaaaaa)\n"
- " aaaaaaaaaaaaaaaaaaaaaaaaaaaa:(int)a;\n");
- verifyFormat("- (aaaaaaaaaaaaaaaaaaaaaaaaaaaaa)\n"
- " aaaaaaaaaaaaaaaaaaaaaaaaaaaa:(int)a\n"
- " aaaaaaaaaaaaaaaaaaaaaaaaaaaa:(int)a;\n");
- verifyFormat("- (aaaaaaaaaaaaaaaaaaaaaaaaaaaaa)\n"
- " aaaaaaaaaaaaaaaaaaaaaaaaaaa:(int)a\n"
- " aaaaaaaaaaaaaaaaaaaaaaaaaaaa:(int)a;\n");
- verifyFormat("- (aaaaaaaaaaaaaaaaaaaaaaaaaaaaa)\n"
- " aaaaaaaaaaaaaaaaaaaaaaaaaaaa:(int)a\n"
- " aaaaaaaaaaaaaaaaaaaaaaaaaaa:(int)a;\n");
-
// Format pairs correctly.
Style.ColumnLimit = 80;
verifyFormat("- (void)drawRectOn:(id)surface\n"
OpenPOWER on IntegriCloud