aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Jasper <djasper@google.com>2013-03-13 07:49:51 +0000
committerDaniel Jasper <djasper@google.com>2013-03-13 07:49:51 +0000
commit6f21a988990ff5872822dcb049bd8fc65ce3d236 (patch)
tree3674fc64cc6a90272d87924bc2a096dcfb35f132
parente0d5c86687c4a449f5104306108aa365b20ba09d (diff)
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
-rw-r--r--lib/Format/Format.cpp12
-rw-r--r--lib/Format/TokenAnnotator.cpp23
-rw-r--r--unittests/Format/FormatTest.cpp2
3 files changed, 22 insertions, 15 deletions
diff --git a/lib/Format/Format.cpp b/lib/Format/Format.cpp
index 0e556fe9b2..74adebe88d 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 307607aadd..72edc76d77 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 5cab6f96f3..fed50f9681 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) {