[PATCH] Fixes bug 19983 - SBPO_Always not covering all the cases

Roman Kashitsyn romankashicin at gmail.com
Tue Aug 5 00:35:30 PDT 2014


Hi djasper,

http://llvm.org/bugs/show_bug.cgi?id=19983

clang-format: Add a space between function template explicit template arguments
and left parenthesis if SPBO_Always option is set.

Before:
```
auto i = std::make_unique<int>(5);
```

After:
```
  auto i = std::make_unique<int> (5);
```

http://reviews.llvm.org/D4788

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

Index: lib/Format/TokenAnnotator.cpp
===================================================================
--- lib/Format/TokenAnnotator.cpp
+++ lib/Format/TokenAnnotator.cpp
@@ -1625,7 +1625,7 @@
       Tok.Previous->Type == TT_ConditionalExpr)
     return true;
   if (Tok.Previous->Type == TT_TemplateCloser && Tok.is(tok::l_paren))
-    return false;
+    return Style.SpaceBeforeParens == FormatStyle::SBPO_Always;
   if (Tok.is(tok::less) && Tok.Previous->isNot(tok::l_paren) &&
       Line.First->is(tok::hash))
     return true;
Index: unittests/Format/FormatTest.cpp
===================================================================
--- unittests/Format/FormatTest.cpp
+++ unittests/Format/FormatTest.cpp
@@ -7528,6 +7528,7 @@
                "default:\n"
                "  break;\n"
                "}", NoSpace);
+  verifyFormat("auto i = std::make_unique<int>(5);", NoSpace);
 
   FormatStyle Space = getLLVMStyle();
   Space.SpaceBeforeParens = FormatStyle::SBPO_Always;
@@ -7564,6 +7565,7 @@
   verifyFormat("#if defined(x)\n"
                "#endif",
                Space);
+  verifyFormat("auto i = std::make_unique<int> (5);", Space);
 }
 
 TEST_F(FormatTest, ConfigurableSpacesInParentheses) {
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D4788.12188.patch
Type: text/x-patch
Size: 1215 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20140805/39f9a839/attachment.bin>


More information about the cfe-commits mailing list