Index: clang/lib/Format/Format.cpp =================================================================== --- clang/lib/Format/Format.cpp +++ clang/lib/Format/Format.cpp @@ -14,6 +14,7 @@ #include "clang/Format/Format.h" #include "AffectedRangeManager.h" +#include "BreakableToken.h" #include "ContinuationIndenter.h" #include "FormatInternal.h" #include "FormatTokenLexer.h" @@ -997,6 +998,12 @@ // #imports, etc.) GoogleStyle.IncludeStyle.IncludeBlocks = tooling::IncludeStyle::IBS_Preserve; + } else if (Language == FormatStyle::LK_CSharp) { + GoogleStyle.AllowShortFunctionsOnASingleLine = FormatStyle::SFS_Empty; + GoogleStyle.AllowShortIfStatementsOnASingleLine = FormatStyle::SIS_Never; + GoogleStyle.BreakStringLiterals = false; + GoogleStyle.ColumnLimit = 100; + GoogleStyle.NamespaceIndentation = FormatStyle::NI_All; } return GoogleStyle; Index: clang/unittests/Format/FormatTestCSharp.cpp =================================================================== --- clang/unittests/Format/FormatTestCSharp.cpp +++ clang/unittests/Format/FormatTestCSharp.cpp @@ -581,8 +581,7 @@ FormatStyle Style = getGoogleStyle(FormatStyle::LK_CSharp); verifyFormat(R"(// -PrintOrderDetails(orderNum: 31, productName: "Red Mug", - sellerName: "Gift Shop");)", +PrintOrderDetails(orderNum: 31, productName: "Red Mug", sellerName: "Gift Shop");)", Style); // Ensure that trailing comments do not cause problems. @@ -639,8 +638,7 @@ get { return _seconds / 3600; } set { if (value < 0 || value > 24) - throw new ArgumentOutOfRangeException( - $"{nameof(value)} must be between 0 and 24."); + throw new ArgumentOutOfRangeException($"{nameof(value)} must be between 0 and 24."); _seconds = value * 3600; } } @@ -727,7 +725,9 @@ verifyFormat(R"(// public class A { - void foo() { int? value = some.bar(); } + void foo() { + int? value = some.bar(); + } })", Style); // int? is nullable not a conditional expression. @@ -772,16 +772,15 @@ where TKey : IComparable where TVal : IMyInterface { public void MyMethod(T t) - where T : IMyInterface { doThing(); } + where T : IMyInterface { + doThing(); + } })", Style); verifyFormat(R"(// class ItemFactory - where T : new(), - IAnInterface, - IAnotherInterface, - IAnotherInterfaceStill {})", + where T : new(), IAnInterface, IAnotherInterface, IAnotherInterfaceStill {})", Style); Style.ColumnLimit = 50; // Force lines to be wrapped.