From 71729680bc76676e751d38cd0829cdd6b38eca70 Mon Sep 17 00:00:00 2001 From: Andrii Ihnatiuk Date: Thu, 8 May 2025 11:48:24 +0300 Subject: [PATCH 1/3] Fix analyzer RCS1250: Don't suggest a collection expression for the Dictionary --- ...mplicitOrExplicitObjectCreationAnalysis.cs | 5 +++- ...seImplicitOrExplicitObjectCreationTests.cs | 27 +++++++++++++++++++ 2 files changed, 31 insertions(+), 1 deletion(-) diff --git a/src/Analyzers/CSharp/Analysis/ObjectCreation/ImplicitOrExplicitObjectCreationAnalysis.cs b/src/Analyzers/CSharp/Analysis/ObjectCreation/ImplicitOrExplicitObjectCreationAnalysis.cs index 80b90bee1c..392d4fa5aa 100644 --- a/src/Analyzers/CSharp/Analysis/ObjectCreation/ImplicitOrExplicitObjectCreationAnalysis.cs +++ b/src/Analyzers/CSharp/Analysis/ObjectCreation/ImplicitOrExplicitObjectCreationAnalysis.cs @@ -59,7 +59,10 @@ protected override bool UseCollectionExpressionFromImplicit(ref SyntaxNodeAnalys var implicitObjectCreation = (ImplicitObjectCreationExpressionSyntax)context.Node; return implicitObjectCreation.ArgumentList?.Arguments.Any() != true - && implicitObjectCreation.Initializer?.Expressions.Any(f => f.IsKind(SyntaxKind.SimpleAssignmentExpression)) != true + && implicitObjectCreation.Initializer?.Expressions + .Any(f => f.IsKind( + SyntaxKind.SimpleAssignmentExpression, + SyntaxKind.ComplexElementInitializerExpression)) != true && UseCollectionExpression(ref context); } diff --git a/src/Tests/Analyzers.Tests/RCS1250UseImplicitOrExplicitObjectCreationTests.cs b/src/Tests/Analyzers.Tests/RCS1250UseImplicitOrExplicitObjectCreationTests.cs index 26bf4f3ab8..61f082be47 100644 --- a/src/Tests/Analyzers.Tests/RCS1250UseImplicitOrExplicitObjectCreationTests.cs +++ b/src/Tests/Analyzers.Tests/RCS1250UseImplicitOrExplicitObjectCreationTests.cs @@ -1903,4 +1903,31 @@ void M2() """, options: Options.AddConfigOption(ConfigOptionKeys.ObjectCreationTypeStyle, ConfigOptionValues.ObjectCreationTypeStyle_Implicit) .AddConfigOption(ConfigOptionKeys.UseCollectionExpression, false)); } + + [Fact, Trait(Traits.Analyzer, DiagnosticIdentifiers.UseImplicitOrExplicitObjectCreation)] + public async Task TestNoDiagnostic_ComplexElementInitializer() + { + await VerifyNoDiagnosticAsync(""" +using System; +using System.Collections; +using System.Collections.Generic; +class C : IEnumerable> +{ + public IEnumerator> GetEnumerator() => throw new System.NotImplementedException(); + + IEnumerator IEnumerable.GetEnumerator() => throw new System.NotImplementedException(); + + public void Add(int arg1, int arg2) + { + } + + static C M() + { + C c = new() { { 1, 2 } }; + return c; + } +} +""", options: Options.AddConfigOption(ConfigOptionKeys.ObjectCreationTypeStyle, ConfigOptionValues.ObjectCreationTypeStyle_Implicit) + .AddConfigOption(ConfigOptionKeys.UseCollectionExpression, true)); + } } From 6df228ea41c6e96bd9e88ddc71795fb1c7313eda Mon Sep 17 00:00:00 2001 From: Andrii Ihnatiuk Date: Mon, 26 May 2025 10:41:00 +0300 Subject: [PATCH 2/3] Update ChangeLog.md --- ChangeLog.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/ChangeLog.md b/ChangeLog.md index 4f2f97bbd2..f3fa0cfdda 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -11,6 +11,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [CLI] Add support for GitLab analyzer reports ([PR](https://github.com/dotnet/roslynator/pull/1633)) +### Fixed + +- Fix analyzer [RCS1250](https://josefpihrt.github.io/docs/roslynator/analyzers/RCS1250) ([PR](https://github.com/dotnet/roslynator/pull/1652)) + ## [4.13.1] - 2025-02-23 ### Added From d85480074a7c821031806c886cf7161b6fdf57ea Mon Sep 17 00:00:00 2001 From: Josef Pihrt Date: Sat, 26 Jul 2025 13:24:39 +0200 Subject: [PATCH 3/3] Update ChangeLog.md --- ChangeLog.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ChangeLog.md b/ChangeLog.md index ad07935492..eaf9396daa 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -15,7 +15,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Fix analyzer [RCS1264](https://josefpihrt.github.io/docs/roslynator/analyzers/RCS1264) ([PR](https://github.com/dotnet/roslynator/pull/1666)) - Fix analyzer [RCS1229](https://josefpihrt.github.io/docs/roslynator/analyzers/RCS1229) ([PR](https://github.com/dotnet/roslynator/pull/1667)) -- Fix analyzer [RCS1250](https://josefpihrt.github.io/docs/roslynator/analyzers/RCS1250) ([PR](https://github.com/dotnet/roslynator/pull/1652)) +- Fix analyzer [RCS1250](https://josefpihrt.github.io/docs/roslynator/analyzers/RCS1250) ([PR](https://github.com/dotnet/roslynator/pull/1652) by @aihnatiuk) ## [4.13.1] - 2025-02-23