From 6f21a988990ff5872822dcb049bd8fc65ce3d236 Mon Sep 17 00:00:00 2001 From: Daniel Jasper <djasper@google.com> Date: Wed, 13 Mar 2013 07:49:51 +0000 Subject: [PATCH] Fix formatting of new arrays of pointers. Before: A = new SomeType * [Length]; A = new SomeType *[Length](); After: A = new SomeType *[Length]; A = new SomeType *[Length](); Small formatting cleanups with clang-format. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@176936 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Format/Format.cpp | 12 ++++++------ lib/Format/TokenAnnotator.cpp | 23 ++++++++++++++--------- unittests/Format/FormatTest.cpp | 2 ++ 3 files changed, 22 insertions(+), 15 deletions(-) diff --git a/lib/Format/Format.cpp b/lib/Format/Format.cpp index 0e556fe9b2b..74adebe88dd 100644 --- a/lib/Format/Format.cpp +++ b/lib/Format/Format.cpp @@ -288,9 +288,9 @@ public: LineState State; State.Column = FirstIndent; State.NextToken = &RootToken; - State.Stack.push_back(ParenState(FirstIndent + 4, FirstIndent, - !Style.BinPackParameters, - /*HasMultiParameterLine=*/ false)); + State.Stack.push_back( + ParenState(FirstIndent + 4, FirstIndent, !Style.BinPackParameters, + /*HasMultiParameterLine=*/ false)); State.VariablePos = 0; State.LineContainsContinuedForLoopSection = false; State.ParenLevel = 0; @@ -739,8 +739,8 @@ private: unsigned StartColumn = State.Column - Current.FormatTok.TokenLength; unsigned OffsetFromStart = 0; while (StartColumn + TailLength > getColumnLimit()) { - StringRef Text = StringRef(Current.FormatTok.Tok.getLiteralData() + - TailOffset, TailLength); + StringRef Text = StringRef( + Current.FormatTok.Tok.getLiteralData() + TailOffset, TailLength); if (StartColumn + OffsetFromStart + 1 > getColumnLimit()) break; StringRef::size_type SplitPoint = getSplitPoint( @@ -1424,7 +1424,7 @@ private: } } - bool touchesRanges(const CharSourceRange& Range) { + bool touchesRanges(const CharSourceRange &Range) { for (unsigned i = 0, e = Ranges.size(); i != e; ++i) { if (!SourceMgr.isBeforeInTranslationUnit(Range.getEnd(), Ranges[i].getBegin()) && diff --git a/lib/Format/TokenAnnotator.cpp b/lib/Format/TokenAnnotator.cpp index 307607aadd7..72edc76d776 100644 --- a/lib/Format/TokenAnnotator.cpp +++ b/lib/Format/TokenAnnotator.cpp @@ -183,21 +183,22 @@ private: bool parseSquare() { if (!CurrentToken) return false; - ScopedContextCreator ContextCreator(*this, 10); // A '[' could be an index subscript (after an indentifier or after // ')' or ']'), it could be the start of an Objective-C method // expression, or it could the the start of an Objective-C array literal. AnnotatedToken *Left = CurrentToken->Parent; AnnotatedToken *Parent = getPreviousToken(*Left); - Contexts.back().IsExpression = true; bool StartsObjCMethodExpr = - !Parent || Parent->is(tok::colon) || Parent->is(tok::l_square) || - Parent->is(tok::l_paren) || Parent->is(tok::kw_return) || - Parent->is(tok::kw_throw) || isUnaryOperator(*Parent) || - Parent->Type == TT_ObjCForIn || Parent->Type == TT_CastRParen || - getBinOpPrecedence(Parent->FormatTok.Tok.getKind(), true, true) > - prec::Unknown; + Contexts.back().CanBeExpression && + (!Parent || Parent->is(tok::colon) || Parent->is(tok::l_square) || + Parent->is(tok::l_paren) || Parent->is(tok::kw_return) || + Parent->is(tok::kw_throw) || isUnaryOperator(*Parent) || + Parent->Type == TT_ObjCForIn || Parent->Type == TT_CastRParen || + getBinOpPrecedence(Parent->FormatTok.Tok.getKind(), true, true) > + prec::Unknown); + ScopedContextCreator ContextCreator(*this, 10); + Contexts.back().IsExpression = true; bool StartsObjCArrayLiteral = Parent && Parent->is(tok::at); if (StartsObjCMethodExpr) { @@ -525,7 +526,8 @@ private: Context(unsigned BindingStrength, bool IsExpression) : BindingStrength(BindingStrength), LongestObjCSelectorName(0), ColonIsForRangeExpr(false), ColonIsObjCMethodExpr(false), - FirstObjCSelectorName(NULL), IsExpression(IsExpression) {} + FirstObjCSelectorName(NULL), IsExpression(IsExpression), + CanBeExpression(true) {} unsigned BindingStrength; unsigned LongestObjCSelectorName; @@ -533,6 +535,7 @@ private: bool ColonIsObjCMethodExpr; AnnotatedToken *FirstObjCSelectorName; bool IsExpression; + bool CanBeExpression; }; /// \brief Puts a new \c Context onto the stack \c Contexts for the lifetime @@ -574,6 +577,8 @@ private: } else if (Current.Parent && Current.Parent->Type == TT_CtorInitializerColon) { Contexts.back().IsExpression = true; + } else if (Current.is(tok::kw_new)) { + Contexts.back().CanBeExpression = false; } if (Current.Type == TT_Unknown) { diff --git a/unittests/Format/FormatTest.cpp b/unittests/Format/FormatTest.cpp index 5cab6f96f30..fed50f9681f 100644 --- a/unittests/Format/FormatTest.cpp +++ b/unittests/Format/FormatTest.cpp @@ -1949,8 +1949,10 @@ TEST_F(FormatTest, UnderstandsUsesOfStarAndAmp) { verifyFormat("for (int i = a * a; i < 10; ++i) {\n}"); verifyFormat("for (int i = 0; i < a * a; ++i) {\n}"); + verifyIndependentOfContext("A = new SomeType *[Length];"); verifyIndependentOfContext("A = new SomeType *[Length]();"); verifyGoogleFormat("A = new SomeType* [Length]();"); + verifyGoogleFormat("A = new SomeType* [Length];"); } TEST_F(FormatTest, AdaptivelyFormatsPointersAndReferences) { -- GitLab