Author: Danil Sidoruk Date: 2022-09-25T21:10:26-07:00 New Revision: 258d7b86eeab4222c783c1a19acd8e18cd7745aa
URL: https://github.com/llvm/llvm-project/commit/258d7b86eeab4222c783c1a19acd8e18cd7745aa DIFF: https://github.com/llvm/llvm-project/commit/258d7b86eeab4222c783c1a19acd8e18cd7745aa.diff LOG: [clang-format] Handle constructor invocations after new operator in C# correct Fixes #56549. Differential Revision: https://reviews.llvm.org/D129926 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 3919bc0ef0b35..a5dbd43cdf264 100644 --- a/clang/lib/Format/UnwrappedLineParser.cpp +++ b/clang/lib/Format/UnwrappedLineParser.cpp @@ -2975,6 +2975,11 @@ void UnwrappedLineParser::parseNew() { if (Style.isCSharp()) { do { + // Handle constructor invocation, e.g. `new(field: value)`. + if (FormatTok->is(tok::l_paren)) + parseParens(); + + // Handle array initialization syntax, e.g. `new[] {10, 20, 30}`. if (FormatTok->is(tok::l_brace)) parseBracedList(); diff --git a/clang/unittests/Format/FormatTestCSharp.cpp b/clang/unittests/Format/FormatTestCSharp.cpp index 680a9576cf5a3..47ad779d632a9 100644 --- a/clang/unittests/Format/FormatTestCSharp.cpp +++ b/clang/unittests/Format/FormatTestCSharp.cpp @@ -617,6 +617,24 @@ var x = foo(className, $@"some code: EXPECT_EQ(Code, format(Code, Style)); } +TEST_F(FormatTestCSharp, CSharpNewOperator) { + FormatStyle Style = getLLVMStyle(FormatStyle::LK_CSharp); + + verifyFormat("public void F() {\n" + " var v = new C(() => { var t = 5; });\n" + "}", + Style); + verifyFormat("public void F() {\n" + " var v = new C(() => {\n" + " try {\n" + " } catch {\n" + " var t = 5;\n" + " }\n" + " });\n" + "}", + Style); +} + TEST_F(FormatTestCSharp, CSharpLambdas) { FormatStyle GoogleStyle = getGoogleStyle(FormatStyle::LK_CSharp); FormatStyle MicrosoftStyle = getMicrosoftStyle(FormatStyle::LK_CSharp); _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits