clang-format: Better support for CUDA's triple brackets.
authorDaniel Jasper <djasper@google.com>
Sat, 5 Nov 2016 17:43:16 +0000 (17:43 +0000)
committerDaniel Jasper <djasper@google.com>
Sat, 5 Nov 2016 17:43:16 +0000 (17:43 +0000)
Before:
  aaaaaaaaaaaaaaa<
      aaaaaaaaaaaaaaaaaaa,
      aaaaaaaaaaaaaa><<<aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa>>>();

After:
  aaaaaaaaaaaaaaa<aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa>
      <<<aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa>>>();

llvm-svn: 286041

clang/lib/Format/TokenAnnotator.cpp
clang/unittests/Format/FormatTest.cpp

index 0b6e71d..cba9a03 100644 (file)
@@ -2488,6 +2488,8 @@ bool TokenAnnotator::canBreakBefore(const AnnotatedLine &Line,
     return true;
   if (Right.is(TT_RangeBasedForLoopColon))
     return false;
+  if (Left.is(TT_TemplateCloser) && Right.is(TT_TemplateOpener))
+    return true;
   if (Left.isOneOf(TT_TemplateCloser, TT_UnaryOperator) ||
       Left.is(tok::kw_operator))
     return false;
index 7ba93a7..f526d45 100644 (file)
@@ -11391,6 +11391,8 @@ TEST_F(FormatTest, TripleAngleBrackets) {
   EXPECT_EQ("f<param><<<1, 1>>>();", format("f< param > <<< 1, 1 >>> ();"));
   verifyFormat("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
                "aaaaaaaaaaa<<<\n    1, 1>>>();");
+  verifyFormat("aaaaaaaaaaaaaaa<aaaaaaaaa, aaaaaaaaaa, aaaaaaaaaaaaaa>\n"
+               "    <<<aaaaaaaaa, aaaaaaaaaa, aaaaaaaaaaaaaaaaaa>>>();");
 }
 
 TEST_F(FormatTest, MergeLessLessAtEnd) {