From: Daniel Jasper Date: Thu, 14 Feb 2013 09:19:04 +0000 (+0000) Subject: Get less confused by trailing comma in Google style. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=c5cfa490a1fa4eb1a3a17803c6125b42abd73455;p=clang Get less confused by trailing comma in Google style. The formatter can now format: void aaaaaaaaaaaaaaaaaa(int level, double *min_x, double *max_x, double *min_y, double *max_y, double *min_z, double *max_z, ) { } Although this is invalid code, it frequently happens during development and clang-format should be nicer :-). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@175151 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Format/Format.cpp b/lib/Format/Format.cpp index 1bd864e5c9..f03b77853c 100644 --- a/lib/Format/Format.cpp +++ b/lib/Format/Format.cpp @@ -781,7 +781,8 @@ private: return true; if (State.NextToken->Parent->is(tok::comma) && State.Stack.back().BreakBeforeParameter && - !isTrailingComment(*State.NextToken)) + !isTrailingComment(*State.NextToken) && + State.NextToken->isNot(tok::r_paren)) return true; // FIXME: Comparing LongestObjCSelectorName to 0 is a hacky way of finding // out whether it is the first parameter. Clean this up. diff --git a/unittests/Format/FormatTest.cpp b/unittests/Format/FormatTest.cpp index d5e3c24545..e99aad7a8c 100644 --- a/unittests/Format/FormatTest.cpp +++ b/unittests/Format/FormatTest.cpp @@ -1817,6 +1817,17 @@ TEST_F(FormatTest, HandlesIncludeDirectives) { // Error recovery tests. //===----------------------------------------------------------------------===// +TEST_F(FormatTest, IncompleteParameterLists) { + verifyGoogleFormat("void aaaaaaaaaaaaaaaaaa(int level,\n" + " double *min_x,\n" + " double *max_x,\n" + " double *min_y,\n" + " double *max_y,\n" + " double *min_z,\n" + " double *max_z, ) {\n" + "}"); +} + TEST_F(FormatTest, IncorrectCodeTrailingStuff) { verifyFormat("void f() { return; }\n42"); verifyFormat("void f() {\n"