Now that we iterate on the formatting multiple times when we
have chains of preprocessor branches, we need to correctly reset
the token's previous and next pointer for the first / last token.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@193071
91177308-0d34-0410-b5e6-
96231b3b80d8
MustBeDeclaration(Line.MustBeDeclaration), MightBeFunctionDecl(false),
StartsDefinition(false) {
assert(!Line.Tokens.empty());
+
+ // Calculate Next and Previous for all tokens. Note that we must overwrite
+ // Next and Previous for every token, as previous formatting runs might have
+ // left them in a different state.
+ First->Previous = NULL;
FormatToken *Current = First;
for (std::list<UnwrappedLineNode>::const_iterator I = ++Line.Tokens.begin(),
E = Line.Tokens.end();
}
}
Last = Current;
+ Last->Next = NULL;
}
~AnnotatedLine() {
"int i;");
}
+TEST_F(FormatTest, FormatsJoinedLinesOnSubsequentRuns) {
+ FormatStyle SingleLine = getLLVMStyle();
+ SingleLine.AllowShortIfStatementsOnASingleLine = true;
+ verifyFormat(
+ "#if 0\n"
+ "#elif 1\n"
+ "#endif\n"
+ "void foo() {\n"
+ " if (test) foo2();\n"
+ "}",
+ SingleLine);
+}
+
TEST_F(FormatTest, LayoutBlockInsideParens) {
EXPECT_EQ("functionCall({ int i; });", format(" functionCall ( {int i;} );"));
EXPECT_EQ("functionCall({\n"