From: Manuel Klimek Date: Wed, 23 Jan 2013 10:09:28 +0000 (+0000) Subject: Fix segfaults in the formatter. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=092a2c7373c02d1653bea1feb1ada05363b02bc2;p=clang Fix segfaults in the formatter. Also: expletive deleted. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173247 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Format/Format.cpp b/lib/Format/Format.cpp index bdcf5b67fe..90bcf6feb7 100644 --- a/lib/Format/Format.cpp +++ b/lib/Format/Format.cpp @@ -1049,7 +1049,7 @@ public: break; case tok::kw_if: case tok::kw_while: - if (CurrentToken->is(tok::l_paren)) { + if (CurrentToken != NULL && CurrentToken->is(tok::l_paren)) { next(); if (!parseParens(/*LookForDecls=*/true)) return false; @@ -1088,7 +1088,7 @@ public: Tok->Type = TT_BinaryOperator; break; case tok::kw_operator: - if (CurrentToken->is(tok::l_paren)) { + if (CurrentToken != NULL && CurrentToken->is(tok::l_paren)) { CurrentToken->Type = TT_OverloadedOperator; next(); if (CurrentToken != NULL && CurrentToken->is(tok::r_paren)) { diff --git a/unittests/Format/FormatTest.cpp b/unittests/Format/FormatTest.cpp index c1c1696d9e..fb5221ee24 100644 --- a/unittests/Format/FormatTest.cpp +++ b/unittests/Format/FormatTest.cpp @@ -1679,11 +1679,16 @@ TEST_F(FormatTest, BlockComments) { "/* */someCall(parameter);", getLLVMStyleWithColumns(15))); } -TEST_F(FormatTest, Fuck) { +TEST_F(FormatTest, FormatStarDependingOnContext) { verifyFormat("void f(int *a);"); verifyFormat("void f() { f(fint * b); }"); } +TEST_F(FormatTest, SpecialTokensAtEndOfLine) { + verifyFormat("while"); + verifyFormat("operator"); +} + //===----------------------------------------------------------------------===// // Objective-C tests. //===----------------------------------------------------------------------===//