]> granicus.if.org Git - clang/commitdiff
Don't add an extra space before ellipsis after pointers.
authorDaniel Jasper <djasper@google.com>
Mon, 1 Jul 2013 09:47:25 +0000 (09:47 +0000)
committerDaniel Jasper <djasper@google.com>
Mon, 1 Jul 2013 09:47:25 +0000 (09:47 +0000)
Before (for styles where the pointer binds to the type):
template <class... Ts> void Foo(Ts... ts) {}
template <class... Ts> void Foo(Ts* ... ts) {}
After:
template <class... Ts> void Foo(Ts... ts) {}
template <class... Ts> void Foo(Ts*... ts) {}

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@185321 91177308-0d34-0410-b5e6-96231b3b80d8

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

index 7cbacd9042dfaa04c7871366aed9960b3cae459e..f7cea124a812b23c34a7dce6f44b93fe88e88e26 100644 (file)
@@ -1065,6 +1065,8 @@ bool TokenAnnotator::spaceRequiredBetween(const AnnotatedLine &Line,
     return !Left.isOneOf(tok::identifier, tok::greater, tok::l_paren);
   if (Left.is(tok::less) || Right.isOneOf(tok::greater, tok::less))
     return false;
+  if (Right.is(tok::ellipsis))
+    return false;
   if (Right.Type == TT_PointerOrReference)
     return Left.Tok.isLiteral() ||
            ((Left.Type != TT_PointerOrReference) && Left.isNot(tok::l_paren) &&
@@ -1110,8 +1112,6 @@ bool TokenAnnotator::spaceRequiredBetween(const AnnotatedLine &Line,
   if (Left.isOneOf(tok::identifier, tok::greater, tok::r_square) &&
       Right.is(tok::l_brace) && Right.getNextNoneComment())
     return false;
-  if (Right.is(tok::ellipsis))
-    return false;
   if (Left.is(tok::period) || Right.is(tok::period))
     return false;
   if (Left.Type == TT_BlockComment && Left.TokenText.endswith("=*/"))
index 25e1d49f08d0db2bddfe6695a93f6153ef01e8fc..5bdc1b949d918cbd4071c9293c563ea0ba843797 100644 (file)
@@ -3284,6 +3284,11 @@ TEST_F(FormatTest, UnderstandsUsesOfStarAndAmp) {
 TEST_F(FormatTest, UnderstandsEllipsis) {
   verifyFormat("int printf(const char *fmt, ...);");
   verifyFormat("template <class... Ts> void Foo(Ts... ts) { Foo(ts...); }");
+  verifyFormat("template <class... Ts> void Foo(Ts *... ts) {}");
+
+  FormatStyle PointersLeft = getLLVMStyle();
+  PointersLeft.PointerBindsToType = true;
+  verifyFormat("template <class... Ts> void Foo(Ts*... ts) {}", PointersLeft);
 }
 
 TEST_F(FormatTest, AdaptivelyFormatsPointersAndReferences) {