<div dir="ltr"><br><div class="gmail_extra"><br><br><div class="gmail_quote">On Tue, Oct 8, 2013 at 1:19 PM, Roman Himmes <span dir="ltr"><<a href="mailto:roman@himmes.com" target="_blank" class="cremed">roman@himmes.com</a>></span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word">Hi,<div><br></div><div>at work we have a project with a different style where the * or & is placed between the type and the variable. An example is: "const std::string & str". To make clang-format to recognize that kind of formatting I created a small patch, see below.</div>

<div><br></div><div>I removed the old boolean setting "PointerBindsToType" and replaced it with a "PointerBinding" option with the three settings: Left, Middle and Right.</div><div><br></div><div>Modified:</div>

<div>    <span style="color:rgb(255,0,0)">include/clang/Format/Format.h</span></div><div><span style="color:rgb(255,0,0)">    lib/Format/Format.cpp</span></div><div><font color="#ff0000">    </font><span style="color:rgb(0,170,0)">unittests/Format/FormatTest.cpp</span></div>

<div><span style="color:rgb(0,170,0)">    lib/Format/TokenAnnotator.cpp</span></div><div><div><br></div></div><div>What do you think of this patch?</div></div></blockquote><div><br></div><div>- This would break everybody who already has a .clang-format file somewhere. We really need to make changes to the configuration options in a backwards compatible fashion if at all possible. We probably can change the type of the configuration variable, but we need to adapt the config file reader to still accept PointerBindsToType and set PointerBinding appropriately.</div>
<div>- This would need a lot of additional tests to verify that we actually format the different cases correctly (duplicate at least a few tests from UnderstandsUsesOfStarAndAmp).</div>
<div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word"><div>
<pre style="margin-top:0px;margin-bottom:0px">Index: include/clang/Format/Format.h</pre>
<pre style="margin-top:0px;margin-bottom:0px">===================================================================</pre>
<pre style="margin-top:0px;margin-bottom:0px"><span style="color:#ff0000">--- include/clang/Format/Format.h     (revision 191970)</span></pre>
<pre style="margin-top:0px;margin-bottom:0px"><span style="color:#00aa00">+++ include/clang/Format/Format.h     (working copy)</span></pre>
<pre style="margin-top:0px;margin-bottom:0px"><span style="color:#0000ff">@@ -52,8 +52,18 @@</span></pre>
<pre style="margin-top:0px;margin-bottom:0px">   /// \brief The penalty for breaking before the first \c <<.</pre>
<pre style="margin-top:0px;margin-bottom:0px">   unsigned PenaltyBreakFirstLessLess;</pre>
<pre style="margin-top:0px;margin-bottom:0px"> </pre>
<pre style="margin-top:0px;margin-bottom:0px"><span style="color:#00aa00">+  /// \brief Different ways of placing pointer between type and variable</span></pre>
<pre style="margin-top:0px;margin-bottom:0px"><span style="color:#00aa00">+  enum PointerBindingKind {</span></pre>
<pre style="margin-top:0px;margin-bottom:0px"><span style="color:#00aa00">+    /// Put pointer or refernce at the type. Same as former setting 'PointerBindsToType: True'</span></pre>
<pre style="margin-top:0px;margin-bottom:0px"><span style="color:#00aa00">+    PB_Left,</span></pre></div></div></blockquote><div><br></div><div>Typo. Also, there is no use in referencing previous version of the code.</div>
<div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word"><div>
<pre style="margin-top:0px;margin-bottom:0px"><span style="color:#00aa00">+    /// Put pointer or reference in the middle of type and variable name like: const std::string & str</span></pre>
<pre style="margin-top:0px;margin-bottom:0px"><span style="color:#00aa00">+    PB_Middle,</span><span style="font-family:arial"> </span></pre></div></div></blockquote><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div style="word-wrap:break-word"><div>
<pre style="margin-top:0px;margin-bottom:0px"><span style="color:#00aa00">+    /// Put pointer or reference at the variable. Same as former setting 'PointerBindsToType: false'</span></pre>
<pre style="margin-top:0px;margin-bottom:0px"><span style="color:#00aa00">+    PB_Right</span></pre>
<pre style="margin-top:0px;margin-bottom:0px"><span style="color:#00aa00">+  };</span></pre>
<pre style="margin-top:0px;margin-bottom:0px"><span style="color:#00aa00">+</span></pre>
<pre style="margin-top:0px;margin-bottom:0px">   /// \brief Set whether & and * bind to the type as opposed to the variable.</pre>
<pre style="margin-top:0px;margin-bottom:0px"><span style="color:#ff0000">-  bool PointerBindsToType;</span></pre>
<pre style="margin-top:0px;margin-bottom:0px"><span style="color:#00aa00">+  PointerBindingKind PointerBinding;</span></pre>
<pre style="margin-top:0px;margin-bottom:0px"> </pre>
<pre style="margin-top:0px;margin-bottom:0px">   /// \brief If \c true, analyze the formatted file for the most common binding.</pre>
<pre style="margin-top:0px;margin-bottom:0px">   bool DerivePointerBinding;</pre>
<pre style="margin-top:0px;margin-bottom:0px"><span style="color:#0000ff">@@ -273,7 +283,7 @@</span></pre>
<pre style="margin-top:0px;margin-bottom:0px">            PenaltyBreakString == R.PenaltyBreakString &&</pre>
<pre style="margin-top:0px;margin-bottom:0px">            PenaltyExcessCharacter == R.PenaltyExcessCharacter &&</pre>
<pre style="margin-top:0px;margin-bottom:0px">            PenaltyReturnTypeOnItsOwnLine == R.PenaltyReturnTypeOnItsOwnLine &&</pre>
<pre style="margin-top:0px;margin-bottom:0px"><span style="color:#ff0000">-           PointerBindsToType == R.PointerBindsToType &&</span></pre>
<pre style="margin-top:0px;margin-bottom:0px"><span style="color:#00aa00">+           PointerBinding == R.PointerBinding &&</span></pre>
<pre style="margin-top:0px;margin-bottom:0px">            SpacesBeforeTrailingComments == R.SpacesBeforeTrailingComments &&</pre>
<pre style="margin-top:0px;margin-bottom:0px">            Cpp11BracedListStyle == R.Cpp11BracedListStyle &&</pre>
<pre style="margin-top:0px;margin-bottom:0px">            Standard == R.Standard && TabWidth == R.TabWidth &&</pre>
<pre style="margin-top:0px;margin-bottom:0px">Index: lib/Format/Format.cpp</pre>
<pre style="margin-top:0px;margin-bottom:0px">===================================================================</pre>
<pre style="margin-top:0px;margin-bottom:0px"><span style="color:#ff0000">--- lib/Format/Format.cpp     (revision 191970)</span></pre>
<pre style="margin-top:0px;margin-bottom:0px"><span style="color:#00aa00">+++ lib/Format/Format.cpp     (working copy)</span></pre>
<pre style="margin-top:0px;margin-bottom:0px"><span style="color:#0000ff">@@ -34,6 +34,16 @@</span></pre>
<pre style="margin-top:0px;margin-bottom:0px"> namespace llvm {</pre>
<pre style="margin-top:0px;margin-bottom:0px"> namespace yaml {</pre>
<pre style="margin-top:0px;margin-bottom:0px"> template <></pre>
<pre style="margin-top:0px;margin-bottom:0px"><span style="color:#00aa00">+struct ScalarEnumerationTraits<clang::format::FormatStyle::PointerBindingKind> {</span></pre>
<pre style="margin-top:0px;margin-bottom:0px"><span style="color:#00aa00">+  static void enumeration(IO &IO,</span></pre>
<pre style="margin-top:0px;margin-bottom:0px"><span style="color:#00aa00">+                          clang::format::FormatStyle::PointerBindingKind &Value) {</span></pre>
<pre style="margin-top:0px;margin-bottom:0px"><span style="color:#00aa00">+    IO.enumCase(Value, "Left",   clang::format::FormatStyle::PB_Left);</span></pre>
<pre style="margin-top:0px;margin-bottom:0px"><span style="color:#00aa00">+    IO.enumCase(Value, "Middle", clang::format::FormatStyle::PB_Middle);</span></pre>
<pre style="margin-top:0px;margin-bottom:0px"><span style="color:#00aa00">+    IO.enumCase(Value, "Right",  clang::format::FormatStyle::PB_Right);</span></pre></div></div></blockquote><div><br></div><div>While this alignment might seem nice, I don't think it adds a lot of value. I'd rather keep this file clang-format clean.</div>
<div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word"><div>
<pre style="margin-top:0px;margin-bottom:0px"><span style="color:#00aa00">+  }</span></pre>
<pre style="margin-top:0px;margin-bottom:0px"><span style="color:#00aa00">+};</span></pre>
<pre style="margin-top:0px;margin-bottom:0px"><span style="color:#00aa00">+</span></pre>
<pre style="margin-top:0px;margin-bottom:0px"><span style="color:#00aa00">+template <></span></pre>
<pre style="margin-top:0px;margin-bottom:0px"> struct ScalarEnumerationTraits<clang::format::FormatStyle::LanguageStandard> {</pre>
<pre style="margin-top:0px;margin-bottom:0px">   static void enumeration(IO &IO,</pre>
<pre style="margin-top:0px;margin-bottom:0px">                           clang::format::FormatStyle::LanguageStandard &Value) {</pre>
<pre style="margin-top:0px;margin-bottom:0px"><span style="color:#0000ff">@@ -144,7 +154,7 @@</span></pre>
<pre style="margin-top:0px;margin-bottom:0px">     IO.mapOptional("PenaltyExcessCharacter", Style.PenaltyExcessCharacter);</pre>
<pre style="margin-top:0px;margin-bottom:0px">     IO.mapOptional("PenaltyReturnTypeOnItsOwnLine",</pre>
<pre style="margin-top:0px;margin-bottom:0px">                    Style.PenaltyReturnTypeOnItsOwnLine);</pre>
<pre style="margin-top:0px;margin-bottom:0px"><span style="color:#ff0000">-    IO.mapOptional("PointerBindsToType", Style.PointerBindsToType);</span></pre>
<pre style="margin-top:0px;margin-bottom:0px"><span style="color:#00aa00">+    IO.mapOptional("PointerBinding", Style.PointerBinding);</span></pre>
<pre style="margin-top:0px;margin-bottom:0px">     IO.mapOptional("SpacesBeforeTrailingComments",</pre>
<pre style="margin-top:0px;margin-bottom:0px">                    Style.SpacesBeforeTrailingComments);</pre>
<pre style="margin-top:0px;margin-bottom:0px">     IO.mapOptional("Cpp11BracedListStyle", Style.Cpp11BracedListStyle);</pre>
<pre style="margin-top:0px;margin-bottom:0px"><span style="color:#0000ff">@@ -205,7 +215,7 @@</span></pre>
<pre style="margin-top:0px;margin-bottom:0px">   LLVMStyle.MaxEmptyLinesToKeep = 1;</pre>
<pre style="margin-top:0px;margin-bottom:0px">   LLVMStyle.NamespaceIndentation = FormatStyle::NI_None;</pre>
<pre style="margin-top:0px;margin-bottom:0px">   LLVMStyle.ObjCSpaceBeforeProtocolList = true;</pre>
<pre style="margin-top:0px;margin-bottom:0px"><span style="color:#ff0000">-  LLVMStyle.PointerBindsToType = false;</span></pre>
<pre style="margin-top:0px;margin-bottom:0px"><span style="color:#00aa00">+  LLVMStyle.PointerBinding = FormatStyle::PB_Right;</span></pre>
<pre style="margin-top:0px;margin-bottom:0px">   LLVMStyle.SpacesBeforeTrailingComments = 1;</pre>
<pre style="margin-top:0px;margin-bottom:0px">   LLVMStyle.Standard = FormatStyle::LS_Cpp03;</pre>
<pre style="margin-top:0px;margin-bottom:0px">   LLVMStyle.UseTab = FormatStyle::UT_Never;</pre>
<pre style="margin-top:0px;margin-bottom:0px"><span style="color:#0000ff">@@ -248,7 +258,7 @@</span></pre>
<pre style="margin-top:0px;margin-bottom:0px">   GoogleStyle.MaxEmptyLinesToKeep = 1;</pre>
<pre style="margin-top:0px;margin-bottom:0px">   GoogleStyle.NamespaceIndentation = FormatStyle::NI_None;</pre>
<pre style="margin-top:0px;margin-bottom:0px">   GoogleStyle.ObjCSpaceBeforeProtocolList = false;</pre>
<pre style="margin-top:0px;margin-bottom:0px"><span style="color:#ff0000">-  GoogleStyle.PointerBindsToType = true;</span></pre>
<pre style="margin-top:0px;margin-bottom:0px"><span style="color:#00aa00">+  GoogleStyle.PointerBinding = FormatStyle::PB_Left;</span></pre>
<pre style="margin-top:0px;margin-bottom:0px">   GoogleStyle.SpacesBeforeTrailingComments = 2;</pre>
<pre style="margin-top:0px;margin-bottom:0px">   GoogleStyle.Standard = FormatStyle::LS_Auto;</pre>
<pre style="margin-top:0px;margin-bottom:0px">   GoogleStyle.UseTab = FormatStyle::UT_Never;</pre>
<pre style="margin-top:0px;margin-bottom:0px"><span style="color:#0000ff">@@ -283,7 +293,7 @@</span></pre>
<pre style="margin-top:0px;margin-bottom:0px">   MozillaStyle.IndentCaseLabels = true;</pre>
<pre style="margin-top:0px;margin-bottom:0px">   MozillaStyle.ObjCSpaceBeforeProtocolList = false;</pre>
<pre style="margin-top:0px;margin-bottom:0px">   MozillaStyle.PenaltyReturnTypeOnItsOwnLine = 200;</pre>
<pre style="margin-top:0px;margin-bottom:0px"><span style="color:#ff0000">-  MozillaStyle.PointerBindsToType = true;</span></pre>
<pre style="margin-top:0px;margin-bottom:0px"><span style="color:#00aa00">+  MozillaStyle.PointerBinding = FormatStyle::PB_Left;</span></pre>
<pre style="margin-top:0px;margin-bottom:0px">   return MozillaStyle;</pre>
<pre style="margin-top:0px;margin-bottom:0px"> }</pre>
<pre style="margin-top:0px;margin-bottom:0px"> </pre>
<pre style="margin-top:0px;margin-bottom:0px"><span style="color:#0000ff">@@ -297,7 +307,7 @@</span></pre>
<pre style="margin-top:0px;margin-bottom:0px">   Style.ColumnLimit = 0;</pre>
<pre style="margin-top:0px;margin-bottom:0px">   Style.IndentWidth = 4;</pre>
<pre style="margin-top:0px;margin-bottom:0px">   Style.NamespaceIndentation = FormatStyle::NI_Inner;</pre>
<pre style="margin-top:0px;margin-bottom:0px"><span style="color:#ff0000">-  Style.PointerBindsToType = true;</span></pre>
<pre style="margin-top:0px;margin-bottom:0px"><span style="color:#00aa00">+  Style.PointerBinding = FormatStyle::PB_Left;</span></pre>
<pre style="margin-top:0px;margin-bottom:0px">   return Style;</pre>
<pre style="margin-top:0px;margin-bottom:0px"> }</pre>
<pre style="margin-top:0px;margin-bottom:0px"> </pre>
<pre style="margin-top:0px;margin-bottom:0px"><span style="color:#0000ff">@@ -980,9 +990,9 @@</span></pre>
<pre style="margin-top:0px;margin-bottom:0px">     }</pre>
<pre style="margin-top:0px;margin-bottom:0px">     if (Style.DerivePointerBinding) {</pre>
<pre style="margin-top:0px;margin-bottom:0px">       if (CountBoundToType > CountBoundToVariable)</pre>
<pre style="margin-top:0px;margin-bottom:0px"><span style="color:#ff0000">-        Style.PointerBindsToType = true;</span></pre>
<pre style="margin-top:0px;margin-bottom:0px"><span style="color:#00aa00">+        Style.PointerBinding = FormatStyle::PB_Left;</span></pre>
<pre style="margin-top:0px;margin-bottom:0px">       else if (CountBoundToType < CountBoundToVariable)</pre>
<pre style="margin-top:0px;margin-bottom:0px"><span style="color:#ff0000">-        Style.PointerBindsToType = false;</span></pre>
<pre style="margin-top:0px;margin-bottom:0px"><span style="color:#00aa00">+        Style.PointerBinding = FormatStyle::PB_Right;</span></pre></div></div></blockquote><div><br></div><div>Wouldn't we want to detect all three kinds of bindings.</div>
<div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word"><div>
<pre style="margin-top:0px;margin-bottom:0px">     }</pre>
<pre style="margin-top:0px;margin-bottom:0px">     if (Style.Standard == FormatStyle::LS_Auto) {</pre>
<pre style="margin-top:0px;margin-bottom:0px">       Style.Standard = HasCpp03IncompatibleFormat ? FormatStyle::LS_Cpp11</pre>
<pre style="margin-top:0px;margin-bottom:0px">Index: lib/Format/TokenAnnotator.cpp</pre>
<pre style="margin-top:0px;margin-bottom:0px">===================================================================</pre>
<pre style="margin-top:0px;margin-bottom:0px"><span style="color:#ff0000">--- lib/Format/TokenAnnotator.cpp     (revision 191970)</span></pre>
<pre style="margin-top:0px;margin-bottom:0px"><span style="color:#00aa00">+++ lib/Format/TokenAnnotator.cpp     (working copy)</span></pre>
<pre style="margin-top:0px;margin-bottom:0px"><span style="color:#0000ff">@@ -1229,14 +1229,14 @@</span></pre>
<pre style="margin-top:0px;margin-bottom:0px">   if (Right.Type == TT_PointerOrReference)</pre>
<pre style="margin-top:0px;margin-bottom:0px">     return Left.Tok.isLiteral() ||</pre>
<pre style="margin-top:0px;margin-bottom:0px">            ((Left.Type != TT_PointerOrReference) && Left.isNot(tok::l_paren) &&</pre>
<pre style="margin-top:0px;margin-bottom:0px"><span style="color:#ff0000">-            !Style.PointerBindsToType);</span></pre>
<pre style="margin-top:0px;margin-bottom:0px"><span style="color:#00aa00">+            Style.PointerBinding != FormatStyle::PB_Left);</span></pre>
<pre style="margin-top:0px;margin-bottom:0px">   if (Right.Type == TT_FunctionTypeLParen && Left.isNot(tok::l_paren) &&</pre>
<pre style="margin-top:0px;margin-bottom:0px"><span style="color:#ff0000">-      (Left.Type != TT_PointerOrReference || Style.PointerBindsToType))</span></pre>
<pre style="margin-top:0px;margin-bottom:0px"><span style="color:#00aa00">+      (Left.Type != TT_PointerOrReference || Style.PointerBinding != FormatStyle::PB_Right))</span></pre>
<pre style="margin-top:0px;margin-bottom:0px">     return true;</pre>
<pre style="margin-top:0px;margin-bottom:0px">   if (Left.Type == TT_PointerOrReference)</pre>
<pre style="margin-top:0px;margin-bottom:0px">     return Right.Tok.isLiteral() || Right.Type == TT_BlockComment ||</pre>
<pre style="margin-top:0px;margin-bottom:0px">            ((Right.Type != TT_PointerOrReference) &&</pre>
<pre style="margin-top:0px;margin-bottom:0px"><span style="color:#ff0000">-            Right.isNot(tok::l_paren) && Style.PointerBindsToType &&</span></pre>
<pre style="margin-top:0px;margin-bottom:0px"><span style="color:#00aa00">+            Right.isNot(tok::l_paren) && Style.PointerBinding != FormatStyle::PB_Right &&</span></pre>
<pre style="margin-top:0px;margin-bottom:0px">             Left.Previous &&</pre>
<pre style="margin-top:0px;margin-bottom:0px">             !Left.Previous->isOneOf(tok::l_paren, tok::coloncolon));</pre>
<pre style="margin-top:0px;margin-bottom:0px">   if (<a href="http://Right.is" target="_blank" class="cremed">Right.is</a>(tok::star) && <a href="http://Left.is" target="_blank" class="cremed">Left.is</a>(tok::l_paren))</pre>


<pre style="margin-top:0px;margin-bottom:0px">Index: unittests/Format/FormatTest.cpp</pre>
<pre style="margin-top:0px;margin-bottom:0px">===================================================================</pre>
<pre style="margin-top:0px;margin-bottom:0px"><span style="color:#ff0000">--- unittests/Format/FormatTest.cpp   (revision 191970)</span></pre>
<pre style="margin-top:0px;margin-bottom:0px"><span style="color:#00aa00">+++ unittests/Format/FormatTest.cpp   (working copy)</span></pre>
<pre style="margin-top:0px;margin-bottom:0px"><span style="color:#0000ff">@@ -3667,7 +3667,7 @@</span></pre>
<pre style="margin-top:0px;margin-bottom:0px">                "      aaaa, bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb);\n"</pre>
<pre style="margin-top:0px;margin-bottom:0px">                "}");</pre>
<pre style="margin-top:0px;margin-bottom:0px">   FormatStyle Style = getLLVMStyle();</pre>
<pre style="margin-top:0px;margin-bottom:0px"><span style="color:#ff0000">-  Style.PointerBindsToType = true;</span></pre>
<pre style="margin-top:0px;margin-bottom:0px"><span style="color:#00aa00">+  Style.PointerBinding = FormatStyle::PB_Left;</span></pre>
<pre style="margin-top:0px;margin-bottom:0px">   verifyFormat("typedef bool* (Class::*Member)() const;", Style);</pre>
<pre style="margin-top:0px;margin-bottom:0px"> }</pre>
<pre style="margin-top:0px;margin-bottom:0px"> </pre>
<pre style="margin-top:0px;margin-bottom:0px"><span style="color:#0000ff">@@ -3890,7 +3890,7 @@</span></pre>
<pre style="margin-top:0px;margin-bottom:0px">   verifyGoogleFormat("T** t = new T*();");</pre>
<pre style="margin-top:0px;margin-bottom:0px"> </pre>
<pre style="margin-top:0px;margin-bottom:0px">   FormatStyle PointerLeft = getLLVMStyle();</pre>
<pre style="margin-top:0px;margin-bottom:0px"><span style="color:#ff0000">-  PointerLeft.PointerBindsToType = true;</span></pre>
<pre style="margin-top:0px;margin-bottom:0px"><span style="color:#00aa00">+  PointerLeft.PointerBinding = FormatStyle::PB_Left;</span></pre>
<pre style="margin-top:0px;margin-bottom:0px">   verifyFormat("delete *x;", PointerLeft);</pre>
<pre style="margin-top:0px;margin-bottom:0px"> }</pre>
<pre style="margin-top:0px;margin-bottom:0px"> </pre>
<pre style="margin-top:0px;margin-bottom:0px"><span style="color:#0000ff">@@ -3904,7 +3904,7 @@</span></pre>
<pre style="margin-top:0px;margin-bottom:0px">   verifyFormat("template <class... Ts> void Foo(Ts *... ts) {}");</pre>
<pre style="margin-top:0px;margin-bottom:0px"> </pre>
<pre style="margin-top:0px;margin-bottom:0px">   FormatStyle PointersLeft = getLLVMStyle();</pre>
<pre style="margin-top:0px;margin-bottom:0px"><span style="color:#ff0000">-  PointersLeft.PointerBindsToType = true;</span></pre>
<pre style="margin-top:0px;margin-bottom:0px"><span style="color:#00aa00">+  PointersLeft.PointerBinding = FormatStyle::PB_Left;</span></pre>
<pre style="margin-top:0px;margin-bottom:0px">   verifyFormat("template <class... Ts> void Foo(Ts*... ts) {}", PointersLeft);</pre>
<pre style="margin-top:0px;margin-bottom:0px"> }</pre>
<pre style="margin-top:0px;margin-bottom:0px"> </pre>
<pre style="margin-top:0px;margin-bottom:0px"><span style="color:#0000ff">@@ -6359,7 +6359,6 @@</span></pre>
<pre style="margin-top:0px;margin-bottom:0px">   CHECK_PARSE_BOOL(DerivePointerBinding);</pre>
<pre style="margin-top:0px;margin-bottom:0px">   CHECK_PARSE_BOOL(IndentCaseLabels);</pre>
<pre style="margin-top:0px;margin-bottom:0px">   CHECK_PARSE_BOOL(ObjCSpaceBeforeProtocolList);</pre>
<pre style="margin-top:0px;margin-bottom:0px"><span style="color:#ff0000">-  CHECK_PARSE_BOOL(PointerBindsToType);</span></pre>
<pre style="margin-top:0px;margin-bottom:0px">   CHECK_PARSE_BOOL(Cpp11BracedListStyle);</pre>
<pre style="margin-top:0px;margin-bottom:0px">   CHECK_PARSE_BOOL(IndentFunctionDeclarationAfterType);</pre>
<pre style="margin-top:0px;margin-bottom:0px">   CHECK_PARSE_BOOL(SpacesInParentheses);</pre>
<pre style="margin-top:0px;margin-bottom:0px"><span style="color:#0000ff">@@ -6380,6 +6379,12 @@</span></pre>
<pre style="margin-top:0px;margin-bottom:0px">               SpacesBeforeTrailingComments, 1234u);</pre>
<pre style="margin-top:0px;margin-bottom:0px">   CHECK_PARSE("IndentWidth: 32", IndentWidth, 32u);</pre>
<pre style="margin-top:0px;margin-bottom:0px"> </pre>
<pre style="margin-top:0px;margin-bottom:0px"><span style="color:#00aa00">+</span></pre>
<pre style="margin-top:0px;margin-bottom:0px"><span style="color:#00aa00">+  Style.PointerBinding = FormatStyle::PB_Left;</span></pre>
<pre style="margin-top:0px;margin-bottom:0px"><span style="color:#00aa00">+  CHECK_PARSE("PointerBinding: Left",   PointerBinding, FormatStyle::PB_Left);</span></pre>
<pre style="margin-top:0px;margin-bottom:0px"><span style="color:#00aa00">+  CHECK_PARSE("PointerBinding: Middle", PointerBinding, FormatStyle::PB_Middle);</span></pre>
<pre style="margin-top:0px;margin-bottom:0px"><span style="color:#00aa00">+  CHECK_PARSE("PointerBinding: Right",  PointerBinding, FormatStyle::PB_Right);</span></pre></div></div></blockquote><div><br></div><div>
Same as above.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word"><div>
<pre style="margin-top:0px;margin-bottom:0px"><span style="color:#00aa00">+</span></pre>
<pre style="margin-top:0px;margin-bottom:0px">   Style.Standard = FormatStyle::LS_Auto;</pre>
<pre style="margin-top:0px;margin-bottom:0px">   CHECK_PARSE("Standard: Cpp03", Standard, FormatStyle::LS_Cpp03);</pre>
<pre style="margin-top:0px;margin-bottom:0px">   CHECK_PARSE("Standard: Cpp11", Standard, FormatStyle::LS_Cpp11);</pre>
<pre style="margin-top:0px;margin-bottom:0px"><br></pre><div><br></div></div></div><br>_______________________________________________<br>
cfe-commits mailing list<br>
<a href="mailto:cfe-commits@cs.uiuc.edu" target="_blank" class="cremed">cfe-commits@cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits" target="_blank" class="cremed">http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits</a><br>
<br></blockquote></div><br></div></div>