Don't remove all indentation when in #defines.

Otherwise, this can become hard to read.

Before: #define A \
        case 1:
After:  #define A \
           case 1:
llvm-svn: 177509
This commit is contained in:
Daniel Jasper 2013-03-20 10:23:53 +00:00
parent 920b3b9a0c
commit a127512cb4
2 changed files with 7 additions and 2 deletions

View File

@ -574,7 +574,7 @@ void UnwrappedLineParser::parseLabel() {
return;
nextToken();
unsigned OldLineLevel = Line->Level;
if (Line->Level > 0)
if (Line->Level > 1 || (!Line->InPPDirective && Line->Level > 0))
--Line->Level;
if (CommentsBeforeNextToken.empty() && FormatTok.Tok.is(tok::l_brace)) {
parseBlock(/*MustBeDeclaration=*/ false);

View File

@ -441,6 +441,11 @@ TEST_F(FormatTest, FormatsSwitchStatement) {
" }\n"
" break;\n"
"}");
verifyFormat("#define A \\\n"
" switch (x) { \\\n"
" case a: \\\n"
" foo = b; \\\n"
" }", getLLVMStyleWithColumns(20));
verifyGoogleFormat("switch (x) {\n"
" case 1:\n"
@ -1209,7 +1214,7 @@ TEST_F(FormatTest, MacroDefinitionsWithIncompleteCode) {
// FIXME: Improve formatting of case labels in macros.
verifyFormat("#define SOMECASES \\\n"
"case 1: \\\n"
" case 1: \\\n"
" case 2\n",
getLLVMStyleWithColumns(20));