[cfe-commits] r172431 - in /cfe/trunk: include/clang/Format/Format.h lib/Format/Format.cpp unittests/Format/FormatTest.cpp

Daniel Jasper djasper at google.com
Mon Jan 14 08:24:39 PST 2013


Author: djasper
Date: Mon Jan 14 10:24:39 2013
New Revision: 172431

URL: http://llvm.org/viewvc/llvm-project?rev=172431&view=rev
Log:
Make single-line if statements optional.

Now, "if (a) return;" is only allowed, if this option is set.

Also add a Chromium style which is currently identical to Google style
except for this option.

Modified:
    cfe/trunk/include/clang/Format/Format.h
    cfe/trunk/lib/Format/Format.cpp
    cfe/trunk/unittests/Format/FormatTest.cpp

Modified: cfe/trunk/include/clang/Format/Format.h
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Format/Format.h?rev=172431&r1=172430&r2=172431&view=diff
==============================================================================
--- cfe/trunk/include/clang/Format/Format.h (original)
+++ cfe/trunk/include/clang/Format/Format.h Mon Jan 14 10:24:39 2013
@@ -61,6 +61,9 @@
   /// initializer on its own line.
   bool ConstructorInitializerAllOnOneLineOrOnePerLine;
 
+  /// \brief If true, "if (a) return;" can be put on a single line.
+  bool AllowShortIfStatementsOnASingleLine;
+
   /// \brief Add a space in front of an Objective-C protocol list, i.e. use
   /// Foo <Protocol> instead of Foo<Protocol>.
   bool ObjCSpaceBeforeProtocolList;
@@ -78,6 +81,10 @@
 /// http://google-styleguide.googlecode.com/svn/trunk/cppguide.xml.
 FormatStyle getGoogleStyle();
 
+/// \brief Returns a format style complying with Chromium's style guide:
+/// http://www.chromium.org/developers/coding-style.
+FormatStyle getChromiumStyle();
+
 /// \brief Reformats the given \p Ranges in the token stream coming out of
 /// \c Lex.
 ///

Modified: cfe/trunk/lib/Format/Format.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Format/Format.cpp?rev=172431&r1=172430&r2=172431&view=diff
==============================================================================
--- cfe/trunk/lib/Format/Format.cpp (original)
+++ cfe/trunk/lib/Format/Format.cpp Mon Jan 14 10:24:39 2013
@@ -117,6 +117,7 @@
   LLVMStyle.IndentCaseLabels = false;
   LLVMStyle.SpacesBeforeTrailingComments = 1;
   LLVMStyle.ConstructorInitializerAllOnOneLineOrOnePerLine = false;
+  LLVMStyle.AllowShortIfStatementsOnASingleLine = false;
   LLVMStyle.ObjCSpaceBeforeProtocolList = true;
   LLVMStyle.ObjCSpaceBeforeReturnType = true;
   return LLVMStyle;
@@ -132,11 +133,18 @@
   GoogleStyle.IndentCaseLabels = true;
   GoogleStyle.SpacesBeforeTrailingComments = 2;
   GoogleStyle.ConstructorInitializerAllOnOneLineOrOnePerLine = true;
+  GoogleStyle.AllowShortIfStatementsOnASingleLine = true;
   GoogleStyle.ObjCSpaceBeforeProtocolList = false;
   GoogleStyle.ObjCSpaceBeforeReturnType = false;
   return GoogleStyle;
 }
 
+FormatStyle getChromiumStyle() {
+  FormatStyle ChromiumStyle = getGoogleStyle();
+  ChromiumStyle.AllowShortIfStatementsOnASingleLine = false;
+  return ChromiumStyle;
+}
+
 struct OptimizationParameters {
   unsigned PenaltyIndentLevel;
   unsigned PenaltyLevelDecrease;
@@ -1441,6 +1449,8 @@
   void tryMergeSimpleIf(std::vector<AnnotatedLine>::iterator &I,
                         std::vector<AnnotatedLine>::iterator E,
                         unsigned Limit) {
+    if (!Style.AllowShortIfStatementsOnASingleLine)
+      return;
     AnnotatedLine &Line = *I;
     if (!fitsIntoLimit((I + 1)->First, Limit))
       return;

Modified: cfe/trunk/unittests/Format/FormatTest.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/unittests/Format/FormatTest.cpp?rev=172431&r1=172430&r2=172431&view=diff
==============================================================================
--- cfe/trunk/unittests/Format/FormatTest.cpp (original)
+++ cfe/trunk/unittests/Format/FormatTest.cpp Mon Jan 14 10:24:39 2013
@@ -78,6 +78,12 @@
     return Style;
   }
 
+  FormatStyle getGoogleStyleWithColumns(unsigned ColumnLimit) {
+    FormatStyle Style = getGoogleStyle();
+    Style.ColumnLimit = ColumnLimit;
+    return Style;
+  }
+
   void verifyFormat(llvm::StringRef Code,
                     const FormatStyle &Style = getLLVMStyle()) {
     EXPECT_EQ(Code.str(), format(messUp(Code), Style));
@@ -130,16 +136,16 @@
 //===----------------------------------------------------------------------===//
 
 TEST_F(FormatTest, FormatIfWithoutCompountStatement) {
-  verifyFormat("if (true) f();\ng();");
-  verifyFormat("if (a)\n  if (b)\n    if (c) g();\nh();");
+  verifyFormat("if (true)\n  f();\ng();");
+  verifyFormat("if (a)\n  if (b)\n    if (c)\n      g();\nh();");
   verifyFormat("if (a)\n  if (b) {\n    f();\n  }\ng();");
-  verifyFormat("if (a)\n"
-               "  // comment\n"
-               "  f();");
-  verifyFormat("if (a) return;", getLLVMStyleWithColumns(14));
-  verifyFormat("if (a)\n  return;", getLLVMStyleWithColumns(13));
+  verifyGoogleFormat("if (a)\n"
+                     "  // comment\n"
+                     "  f();");
+  verifyFormat("if (a) return;", getGoogleStyleWithColumns(14));
+  verifyFormat("if (a)\n  return;", getGoogleStyleWithColumns(13));
   verifyFormat("if (aaaaaaaaa)\n"
-               "  return;", getLLVMStyleWithColumns(14));
+                     "  return;", getGoogleStyleWithColumns(14));
 }
 
 TEST_F(FormatTest, ParseIfElse) {
@@ -156,7 +162,8 @@
   verifyFormat("if (true)\n"
                "  if (true)\n"
                "    if (true) {\n"
-               "      if (true) f();\n"
+               "      if (true)\n"
+               "        f();\n"
                "    } else {\n"
                "      g();\n"
                "    }\n"
@@ -1461,7 +1468,8 @@
 
   verifyFormat("@implementation Foo\n"
                "+ (id)init {\n"
-               "  if (true) return nil;\n"
+               "  if (true)\n"
+               "    return nil;\n"
                "}\n"
                "// Look, a comment!\n"
                "- (int)answerWith:(int)i {\n"





More information about the cfe-commits mailing list