forked from OSchip/llvm-project
clang-format: Fix bug in ObjC method declaration formatting.
Also disallow breaking between "@" and "{" or "[". Before: - (NSAttributedString *)attributedStringForSegment:(NSUInteger)segment index:(NSUInteger)index attributes:(NSDictionary *)attributes nonDigitAttributes:(NSDictionary *) nonDigitAttributes; [mailComposeViewController setToRecipients:@ [ NSBundle.mainBundle.infoDictionary[@"ABBFeedbackEmail"] ]]; After: - (NSAttributedString *)attributedStringForSegment:(NSUInteger)segment index:(NSUInteger)index attributes:(NSDictionary *)attributes nonDigitAttributes: (NSDictionary *)nonDigitAttributes; [mailComposeViewController setToRecipients: @[ NSBundle.mainBundle.infoDictionary[@"ABBFeedbackEmail"] ]]; This fixes llvm.org/PR18030. llvm-svn: 195550
This commit is contained in:
parent
a2fde9484f
commit
4bf0d80993
|
@ -1181,7 +1181,7 @@ unsigned TokenAnnotator::splitPenalty(const AnnotatedLine &Line,
|
|||
if (Right.Type == TT_ObjCSelectorName)
|
||||
return 0;
|
||||
if (Left.is(tok::colon) && Left.Type == TT_ObjCMethodExpr)
|
||||
return 500;
|
||||
return Line.MightBeFunctionDecl ? 50 : 500;
|
||||
|
||||
if (Left.is(tok::l_paren) && InFunctionDecl)
|
||||
return 100;
|
||||
|
@ -1416,6 +1416,8 @@ bool TokenAnnotator::mustBreakBefore(const AnnotatedLine &Line,
|
|||
bool TokenAnnotator::canBreakBefore(const AnnotatedLine &Line,
|
||||
const FormatToken &Right) {
|
||||
const FormatToken &Left = *Right.Previous;
|
||||
if (Left.is(tok::at))
|
||||
return false;
|
||||
if (Right.Type == TT_StartOfName || Right.is(tok::kw_operator))
|
||||
return true;
|
||||
if (Right.isTrailingComment())
|
||||
|
|
|
@ -5751,6 +5751,14 @@ TEST_F(FormatTest, ObjCArrayLiterals) {
|
|||
" @\"aaaaaaaaaaaaaaaaa\",\n"
|
||||
" @\"aaaaaaaaaaaaaaaaa\",\n"
|
||||
"];");
|
||||
verifyFormat(
|
||||
"- (NSAttributedString *)attributedStringForSegment:(NSUInteger)segment\n"
|
||||
" index:(NSUInteger)index\n"
|
||||
" nonDigitAttributes:\n"
|
||||
" (NSDictionary *)noDigitAttributes;");
|
||||
verifyFormat(
|
||||
"[someFunction someLooooooooooooongParameter:\n"
|
||||
" @[ NSBundle.mainBundle.infoDictionary[@\"a\"] ]];");
|
||||
}
|
||||
|
||||
TEST_F(FormatTest, ReformatRegionAdjustsIndent) {
|
||||
|
|
Loading…
Reference in New Issue