From 2827a7ec6b16e21ef1b447cf42066fba14c21dfc Mon Sep 17 00:00:00 2001 From: Nico Weber Date: Sat, 12 Jan 2013 23:48:49 +0000 Subject: [PATCH] Formatter: Don't insert a space before unary operators after selector names. Before: [color getRed: &r green: &g blue: &b alpha: &a]; Now: [color getRed:&r green:&g blue:&b alpha:&a]; llvm-svn: 172337 --- clang/lib/Format/Format.cpp | 5 +++-- clang/unittests/Format/FormatTest.cpp | 1 + 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/clang/lib/Format/Format.cpp b/clang/lib/Format/Format.cpp index 94119325410e..29debe58b6b1 100644 --- a/clang/lib/Format/Format.cpp +++ b/clang/lib/Format/Format.cpp @@ -1165,8 +1165,9 @@ private: return false; if (Tok.Type == TT_UnaryOperator) return Tok.Parent->isNot(tok::l_paren) && - Tok.Parent->isNot(tok::l_square) && - Tok.Parent->isNot(tok::at); + Tok.Parent->isNot(tok::l_square) && Tok.Parent->isNot(tok::at) && + (Tok.Parent->isNot(tok::colon) || + Tok.Parent->Type != TT_ObjCMethodExpr); if (Tok.Parent->is(tok::greater) && Tok.is(tok::greater)) { return Tok.Type == TT_TemplateCloser && Tok.Parent->Type == TT_TemplateCloser && Style.SplitTemplateClosingGreater; diff --git a/clang/unittests/Format/FormatTest.cpp b/clang/unittests/Format/FormatTest.cpp index 8bb217e4833e..5ace0f82f919 100644 --- a/clang/unittests/Format/FormatTest.cpp +++ b/clang/unittests/Format/FormatTest.cpp @@ -1533,6 +1533,7 @@ TEST_F(FormatTest, FormatObjCMethodExpr) { verifyFormat("[self stuffWithInt:a ? (e ? f : g) : c];"); verifyFormat("[cond ? obj1 : obj2 methodWithParam:param]"); verifyFormat("[button setAction:@selector(zoomOut:)];"); + verifyFormat("[color getRed:&r green:&g blue:&b alpha:&a];"); verifyFormat("arr[[self indexForFoo:a]];"); verifyFormat("throw [self errorFor:a];");