Align a multiline string literal with the first part.

Before:
  #define A(X)          \
    "aaaaa" #X "bbbbbb" \
               "ccccc"

After:
  #define A(X)          \
    "aaaaa" #X "bbbbbb" \
    "ccccc"

llvm-svn: 181732
This commit is contained in:
Daniel Jasper 2013-05-13 20:50:15 +00:00
parent f8cf9d4851
commit 47a04442f9
2 changed files with 11 additions and 3 deletions

View File

@ -738,10 +738,10 @@ private:
State.Stack.back().VariablePos = VariablePos;
}
if (Current.is(tok::string_literal)) {
if (Current.is(tok::string_literal) && State.StartOfStringLiteral == 0) {
State.StartOfStringLiteral = State.Column;
} else if (Current.isNot(tok::comment)) {
State.StartOfStringLiteral = 0;
} else if (!Current.isOneOf(tok::comment, tok::identifier, tok::hash,
tok::string_literal)) {
}
State.Column += Current.FormatTok.TokenLength;

View File

@ -2231,6 +2231,14 @@ TEST_F(FormatTest, AlignsStringLiterals) {
"#define LL_FORMAT \"ll\"\n"
"printf(\"aaaaa: %d, bbbbbb: %\" LL_FORMAT \"d, cccccccc: %\" LL_FORMAT\n"
" \"d, ddddddddd: %\" LL_FORMAT \"d\");");
verifyFormat("#define A(X) \\\n"
" \"aaaaa\" #X \"bbbbbb\" \\\n"
" \"ccccc\"",
getLLVMStyleWithColumns(23));
verifyFormat("#define A \"def\"\n"
"f(\"abc\" A \"ghi\"\n"
" \"jkl\");");
}
TEST_F(FormatTest, AlignsPipes) {