r268878 - clang-format: Support enum type template arguments.
Daniel Jasper via cfe-commits
cfe-commits at lists.llvm.org
Sun May 8 11:12:23 PDT 2016
Author: djasper
Date: Sun May 8 13:12:22 2016
New Revision: 268878
URL: http://llvm.org/viewvc/llvm-project?rev=268878&view=rev
Log:
clang-format: Support enum type template arguments.
Before:
template <enum E> class A { public : E *f(); };
After:
template <enum E> class A {
public:
E *f();
};
Modified:
cfe/trunk/lib/Format/UnwrappedLineParser.cpp
cfe/trunk/unittests/Format/FormatTest.cpp
Modified: cfe/trunk/lib/Format/UnwrappedLineParser.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Format/UnwrappedLineParser.cpp?rev=268878&r1=268877&r2=268878&view=diff
==============================================================================
--- cfe/trunk/lib/Format/UnwrappedLineParser.cpp (original)
+++ cfe/trunk/lib/Format/UnwrappedLineParser.cpp Sun May 8 13:12:22 2016
@@ -902,6 +902,7 @@ void UnwrappedLineParser::parseStructura
break;
}
do {
+ const FormatToken *Previous = getPreviousToken();
switch (FormatTok->Tok.getKind()) {
case tok::at:
nextToken();
@@ -909,6 +910,12 @@ void UnwrappedLineParser::parseStructura
parseBracedList();
break;
case tok::kw_enum:
+ // Ignore if this is part of "template <enum ...".
+ if (Previous && Previous->is(tok::less)) {
+ nextToken();
+ break;
+ }
+
// parseEnum falls through and does not yet add an unwrapped line as an
// enum definition can start a structural element.
if (!parseEnum())
Modified: cfe/trunk/unittests/Format/FormatTest.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/unittests/Format/FormatTest.cpp?rev=268878&r1=268877&r2=268878&view=diff
==============================================================================
--- cfe/trunk/unittests/Format/FormatTest.cpp (original)
+++ cfe/trunk/unittests/Format/FormatTest.cpp Sun May 8 13:12:22 2016
@@ -5381,6 +5381,10 @@ TEST_F(FormatTest, WrapsTemplateDeclarat
verifyFormat("template <typename T> // T can be A, B or C.\n"
"struct C {};",
AlwaysBreak);
+ verifyFormat("template <enum E> class A {\n"
+ "public:\n"
+ " E *f();\n"
+ "};");
}
TEST_F(FormatTest, WrapsAtNestedNameSpecifiers) {
More information about the cfe-commits
mailing list