r182741 - Improve formatting of templates.
Daniel Jasper
djasper at google.com
Mon May 27 09:36:33 PDT 2013
Author: djasper
Date: Mon May 27 11:36:33 2013
New Revision: 182741
URL: http://llvm.org/viewvc/llvm-project?rev=182741&view=rev
Log:
Improve formatting of templates.
Before: A < int&& > a;
After: A<int &&> a;
Also remove obsolete FIXMEs.
Modified:
cfe/trunk/lib/Format/TokenAnnotator.cpp
cfe/trunk/unittests/Format/FormatTest.cpp
Modified: cfe/trunk/lib/Format/TokenAnnotator.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Format/TokenAnnotator.cpp?rev=182741&r1=182740&r2=182741&view=diff
==============================================================================
--- cfe/trunk/lib/Format/TokenAnnotator.cpp (original)
+++ cfe/trunk/lib/Format/TokenAnnotator.cpp Mon May 27 11:36:33 2013
@@ -103,7 +103,8 @@ private:
if (CurrentToken->isOneOf(tok::r_paren, tok::r_square, tok::r_brace,
tok::question, tok::colon))
return false;
- if (CurrentToken->isOneOf(tok::pipepipe, tok::ampamp) &&
+ if (CurrentToken->Parent->isOneOf(tok::pipepipe, tok::ampamp) &&
+ CurrentToken->Parent->Type != TT_PointerOrReference &&
Line.First.isNot(tok::kw_template))
return false;
updateParameterCount(Left, CurrentToken);
Modified: cfe/trunk/unittests/Format/FormatTest.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/unittests/Format/FormatTest.cpp?rev=182741&r1=182740&r2=182741&view=diff
==============================================================================
--- cfe/trunk/unittests/Format/FormatTest.cpp (original)
+++ cfe/trunk/unittests/Format/FormatTest.cpp Mon May 27 11:36:33 2013
@@ -1420,7 +1420,6 @@ TEST_F(FormatTest, FormatObjCTryCatch) {
TEST_F(FormatTest, StaticInitializers) {
verifyFormat("static SomeClass SC = { 1, 'a' };");
- // FIXME: Format like enums if the static initializer does not fit on a line.
verifyFormat(
"static SomeClass WithALoooooooooooooooooooongName = {\n"
" 100000000, \"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\"\n"
@@ -1657,13 +1656,10 @@ TEST_F(FormatTest, EmptyLinesInMacroDefi
TEST_F(FormatTest, MacroDefinitionsWithIncompleteCode) {
verifyFormat("#define A :");
-
- // FIXME: Improve formatting of case labels in macros.
verifyFormat("#define SOMECASES \\\n"
" case 1: \\\n"
" case 2\n",
getLLVMStyleWithColumns(20));
-
verifyFormat("#define A template <typename T>");
verifyFormat("#define STR(x) #x\n"
"f(STR(this_is_a_string_literal{));");
@@ -2767,8 +2763,6 @@ TEST_F(FormatTest, WrapsAtNestedNameSpec
" aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa::\n"
" aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa();");
- // FIXME: Look into whether we should indent 4 from the start or 4 from
- // "bbbbb..." here instead of what we are doing now.
verifyFormat(
"aaaaaaaaaaaaaaa(bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb::\n"
" cccccccccccccccccccccccccccccccccccccccccccccc());");
@@ -2962,7 +2956,6 @@ TEST_F(FormatTest, UnderstandsUsesOfStar
verifyGoogleFormat("return sizeof(int**);");
verifyIndependentOfContext("Type **A = static_cast<Type **>(P);");
verifyGoogleFormat("Type** A = static_cast<Type**>(P);");
- // FIXME: The newline is wrong.
verifyFormat("auto a = [](int **&, int ***) {};");
verifyIndependentOfContext("InvalidRegions[*R] = 0;");
@@ -3074,12 +3067,10 @@ TEST_F(FormatTest, UnderstandsRvalueRefe
verifyGoogleFormat("int f(int a, char&& b) {}");
verifyGoogleFormat("void f() { int&& a = b; }");
- // FIXME: These require somewhat deeper changes in template arguments
- // formatting.
- // verifyIndependentOfContext("A<int &&> a;");
- // verifyIndependentOfContext("A<int &&, int &&> a;");
- // verifyGoogleFormat("A<int&&> a;");
- // verifyGoogleFormat("A<int&&, int&&> a;");
+ verifyIndependentOfContext("A<int &&> a;");
+ verifyIndependentOfContext("A<int &&, int &&> a;");
+ verifyGoogleFormat("A<int&&> a;");
+ verifyGoogleFormat("A<int&&, int&&> a;");
}
TEST_F(FormatTest, FormatsBinaryOperatorsPrecedingEquals) {
More information about the cfe-commits
mailing list