Author: Jonathan Coe Date: 2020-04-28T17:35:33+01:00 New Revision: 015bca3e67cbb88f74f01fb5ae4e46392bec6416
URL: https://github.com/llvm/llvm-project/commit/015bca3e67cbb88f74f01fb5ae4e46392bec6416 DIFF: https://github.com/llvm/llvm-project/commit/015bca3e67cbb88f74f01fb5ae4e46392bec6416.diff LOG: [clang-format] C# property formatting can be controlled by config options Summary: Allow brace wrapping in C# property accessors to be controlled by configuration options. Add new tests and revert old test results for MS style to their old state (as intended). `FormatStyle.BraceWrapping.AfterFunction = true;` will change automatic property formatting from ``` Type MyType { get; set } ``` to ``` Type MyType { get; set } ``` Reviewers: krasimir, MyDeveloperDay Subscribers: cfe-commits Tags: #clang-format, #clang Differential Revision: https://reviews.llvm.org/D79000 Added: Modified: clang/lib/Format/UnwrappedLineParser.cpp clang/unittests/Format/FormatTestCSharp.cpp Removed: ################################################################################ diff --git a/clang/lib/Format/UnwrappedLineParser.cpp b/clang/lib/Format/UnwrappedLineParser.cpp index 4734ff16921b..e9e56e80814c 100644 --- a/clang/lib/Format/UnwrappedLineParser.cpp +++ b/clang/lib/Format/UnwrappedLineParser.cpp @@ -1531,6 +1531,8 @@ bool UnwrappedLineParser::tryToParsePropertyAccessor() { // Try to parse the property accessor: // https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/classes-and-structs/properties Tokens->setPosition(StoredPosition); + if (Style.BraceWrapping.AfterFunction == true) + addUnwrappedLine(); nextToken(); do { switch (FormatTok->Tok.getKind()) { diff --git a/clang/unittests/Format/FormatTestCSharp.cpp b/clang/unittests/Format/FormatTestCSharp.cpp index 91962ef12631..550f5b493992 100644 --- a/clang/unittests/Format/FormatTestCSharp.cpp +++ b/clang/unittests/Format/FormatTestCSharp.cpp @@ -245,11 +245,13 @@ TEST_F(FormatTestCSharp, Attributes) { "}"); verifyFormat("[TestMethod]\n" - "public string Host { set; get; }"); + "public string Host\n" + "{ set; get; }"); verifyFormat("[TestMethod(\"start\", HelpText = \"Starts the server " "listening on provided host\")]\n" - "public string Host { set; get; }"); + "public string Host\n" + "{ set; get; }"); verifyFormat( "[DllImport(\"Hello\", EntryPoint = \"hello_world\")]\n" @@ -669,6 +671,32 @@ class MyClass { set => veryLongNamedField = value; } = VeryLongNamedTypeIndeed.Create(DefaultFirstArgument, DefaultSecondArgument, DefaultThirdArgument); +})", + Style); + + // Brace wrapping and single-lining of accessor can be controlled by config. + Style.AllowShortBlocksOnASingleLine = FormatStyle::SBS_Never; + Style.BreakBeforeBraces = FormatStyle::BS_Custom; + Style.BraceWrapping.AfterFunction = true; + + verifyFormat(R"(// +public class SaleItem { + public decimal Price + { get; set; } +})", + Style); + + verifyFormat(R"(// +class TimePeriod { + public double Hours + { + get { + return _seconds / 3600; + } + set { + _seconds = value * 3600; + } + } })", Style); } _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits