From d33516ef32d258945fd5ec8bb4c3205e1adeb252 Mon Sep 17 00:00:00 2001 From: Manuel Klimek Date: Wed, 23 Jan 2013 10:09:28 +0000 Subject: [PATCH] Fix segfaults in the formatter. Also: expletive deleted. llvm-svn: 173247 --- clang/lib/Format/Format.cpp | 4 ++-- clang/unittests/Format/FormatTest.cpp | 7 ++++++- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/clang/lib/Format/Format.cpp b/clang/lib/Format/Format.cpp index bdcf5b6..90bcf6f 100644 --- a/clang/lib/Format/Format.cpp +++ b/clang/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/clang/unittests/Format/FormatTest.cpp b/clang/unittests/Format/FormatTest.cpp index c1c1696..fb5221e 100644 --- a/clang/unittests/Format/FormatTest.cpp +++ b/clang/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. //===----------------------------------------------------------------------===// -- 2.7.4