Fix r296605 so that stuff in #ifndef SWIG blocks is still formatted.

llvm-svn: 296608
This commit is contained in:
Daniel Jasper 2017-03-01 11:10:11 +00:00
parent 5d35b9e56c
commit 62703eb8a7
2 changed files with 18 additions and 9 deletions

View File

@ -589,11 +589,12 @@ void UnwrappedLineParser::conditionalCompilationEnd() {
}
void UnwrappedLineParser::parsePPIf(bool IfDef) {
bool IfNDef = FormatTok->is(tok::pp_ifndef);
nextToken();
bool Unreachable = false;
if (!IfDef && (FormatTok->is(tok::kw_false) || FormatTok->TokenText == "0"))
Unreachable = true;
if (IfDef && FormatTok->TokenText == "SWIG")
if (IfDef && !IfNDef && FormatTok->TokenText == "SWIG")
Unreachable = true;
conditionalCompilationStart(Unreachable);
parsePPUnknown();

View File

@ -1683,14 +1683,6 @@ TEST_F(FormatTestComments, IgnoresIf0Contents) {
"void f( ) { }\n"
"#endif\n"
"void g( ) { }\n"));
EXPECT_EQ("#ifdef SWIG\n"
"}{)(&*(^%%#%@! fsadj f;ldjs ,:;| <<<>>>][)(][\n"
"#endif\n"
"void f() {}",
format("#ifdef SWIG\n"
"}{)(&*(^%%#%@! fsadj f;ldjs ,:;| <<<>>>][)(][\n"
"#endif\n"
"void f( ) { }"));
EXPECT_EQ("enum E {\n"
" One,\n"
" Two,\n"
@ -1809,6 +1801,22 @@ TEST_F(FormatTestComments, IgnoresIf0Contents) {
"#endif\n"
"Five\n"
"};"));
// Ignore stuff in SWIG-blocks.
EXPECT_EQ("#ifdef SWIG\n"
"}{)(&*(^%%#%@! fsadj f;ldjs ,:;| <<<>>>][)(][\n"
"#endif\n"
"void f() {}",
format("#ifdef SWIG\n"
"}{)(&*(^%%#%@! fsadj f;ldjs ,:;| <<<>>>][)(][\n"
"#endif\n"
"void f( ) { }"));
EXPECT_EQ("#ifndef SWIG\n"
"void f() {}\n"
"#endif",
format("#ifndef SWIG\n"
"void f( ) { }\n"
"#endif"));
}
TEST_F(FormatTestComments, DontCrashOnBlockComments) {