forked from OSchip/llvm-project
clang-format: Improve formatting of ObjC dict literals.
Before: NSDictionary *d = @{ @"nam" : NSUserNam(), @"dte" : [NSDate date], @"processInfo" : [NSProcessInfo processInfo] }; After: NSDictionary *d = @{ @"nam" : NSUserNam(), @"dte" : [NSDate date], @"processInfo" : [NSProcessInfo processInfo] }; llvm-svn: 193049
This commit is contained in:
parent
80b5a9d2d0
commit
d489dd342b
|
@ -136,6 +136,9 @@ bool ContinuationIndenter::mustBreak(const LineState &State) {
|
|||
!Previous.isOneOf(tok::kw_return, tok::lessless) &&
|
||||
Previous.Type != TT_InlineASMColon && NextIsMultilineString(State))
|
||||
return true;
|
||||
if (Previous.Type == TT_ObjCDictLiteral && Previous.is(tok::l_brace) &&
|
||||
getLengthToMatchingParen(Previous) + State.Column > getColumnLimit(State))
|
||||
return true;
|
||||
|
||||
if (!Style.BreakBeforeBinaryOperators) {
|
||||
// If we need to break somewhere inside the LHS of a binary expression, we
|
||||
|
@ -593,11 +596,15 @@ unsigned ContinuationIndenter::moveStateToNextToken(LineState &State,
|
|||
|
||||
// If this '[' opens an ObjC call, determine whether all parameters fit into
|
||||
// one line and put one per line if they don't.
|
||||
if (Current.is(tok::l_square) && Current.Type == TT_ObjCMethodExpr &&
|
||||
if (Current.isOneOf(tok::l_brace, tok::l_square) &&
|
||||
(Current.Type == TT_ObjCDictLiteral ||
|
||||
Current.Type == TT_ObjCMethodExpr) &&
|
||||
Current.MatchingParen != NULL) {
|
||||
if (getLengthToMatchingParen(Current) + State.Column >
|
||||
getColumnLimit(State))
|
||||
getColumnLimit(State)) {
|
||||
State.Stack.back().BreakBeforeParameter = true;
|
||||
State.Stack.back().AvoidBinPacking = true;
|
||||
}
|
||||
}
|
||||
|
||||
// If we encounter a closing ), ], } or >, we can remove a level from our
|
||||
|
|
|
@ -5363,14 +5363,17 @@ TEST_F(FormatTest, ObjCLiterals) {
|
|||
verifyFormat(
|
||||
"NSDictionary *settings = @{ AVEncoderKey : @(AVAudioQualityMax) };");
|
||||
|
||||
// FIXME: Nested and multi-line array and dictionary literals need more work.
|
||||
verifyFormat(
|
||||
"NSDictionary *d = @{ @\"nam\" : NSUserNam(), @\"dte\" : [NSDate date],\n"
|
||||
" @\"processInfo\" : [NSProcessInfo processInfo] };");
|
||||
"NSDictionary *d = @{\n"
|
||||
" @\"nam\" : NSUserNam(),\n"
|
||||
" @\"dte\" : [NSDate date],\n"
|
||||
" @\"processInfo\" : [NSProcessInfo processInfo]\n"
|
||||
"};");
|
||||
verifyFormat(
|
||||
"@{ NSFontAttributeNameeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee :\n"
|
||||
" regularFont, };");
|
||||
|
||||
"@{\n"
|
||||
" NSFontAttributeNameeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee : "
|
||||
"regularFont,\n"
|
||||
"};");
|
||||
}
|
||||
|
||||
TEST_F(FormatTest, ReformatRegionAdjustsIndent) {
|
||||
|
|
Loading…
Reference in New Issue