Skip to content

Commit aa26bda

Browse files
authored
Merge pull request #3245 from pantosha/fix-3240
Update SA1413 to support with initializer
2 parents a283433 + 610aa69 commit aa26bda

File tree

2 files changed

+58
-1
lines changed

2 files changed

+58
-1
lines changed

StyleCop.Analyzers/StyleCop.Analyzers.Test.CSharp9/MaintainabilityRules/SA1413CSharp9UnitTests.cs

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,66 @@
33

44
namespace StyleCop.Analyzers.Test.CSharp9.MaintainabilityRules
55
{
6+
using System.Threading;
7+
using System.Threading.Tasks;
8+
using Microsoft.CodeAnalysis.CSharp;
9+
using Microsoft.CodeAnalysis.Testing;
610
using StyleCop.Analyzers.Test.CSharp8.MaintainabilityRules;
11+
using Xunit;
12+
using static StyleCop.Analyzers.Test.Verifiers.StyleCopCodeFixVerifier<
13+
StyleCop.Analyzers.MaintainabilityRules.SA1413UseTrailingCommasInMultiLineInitializers,
14+
StyleCop.Analyzers.MaintainabilityRules.SA1413CodeFixProvider>;
715

816
public class SA1413CSharp9UnitTests : SA1413CSharp8UnitTests
917
{
18+
[Fact]
19+
[WorkItem(3240, "https://github.com/DotNetAnalyzers/StyleCopAnalyzers/issues/3240")]
20+
public async Task VerifyWithInitializerAsync()
21+
{
22+
var testCode = @"namespace TestNamespace
23+
{
24+
public record R
25+
{
26+
public int A { get; set; }
27+
28+
public int B { get; set; }
29+
30+
void M()
31+
{
32+
_ = this with { A = 1, B = 2 };
33+
_ = this with { A = 1, B = 2, };
34+
_ = this with
35+
{
36+
A = 1,
37+
[|B = 2|]
38+
};
39+
}
40+
}
41+
}
42+
";
43+
var fixedCode = @"namespace TestNamespace
44+
{
45+
public record R
46+
{
47+
public int A { get; set; }
48+
49+
public int B { get; set; }
50+
51+
void M()
52+
{
53+
_ = this with { A = 1, B = 2 };
54+
_ = this with { A = 1, B = 2, };
55+
_ = this with
56+
{
57+
A = 1,
58+
B = 2,
59+
};
60+
}
61+
}
62+
}
63+
";
64+
65+
await VerifyCSharpFixAsync(LanguageVersion.CSharp9, testCode, DiagnosticResult.EmptyDiagnosticResults, fixedCode, CancellationToken.None).ConfigureAwait(false);
66+
}
1067
}
1168
}

StyleCop.Analyzers/StyleCop.Analyzers/MaintainabilityRules/SA1413UseTrailingCommasInMultiLineInitializers.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ internal class SA1413UseTrailingCommasInMultiLineInitializers : DiagnosticAnalyz
6363
private static readonly Action<SyntaxNodeAnalysisContext> HandleSwitchExpressionAction = HandleSwitchExpression;
6464

6565
private static readonly ImmutableArray<SyntaxKind> ObjectInitializerKinds =
66-
ImmutableArray.Create(SyntaxKind.ObjectInitializerExpression, SyntaxKind.ArrayInitializerExpression, SyntaxKind.CollectionInitializerExpression);
66+
ImmutableArray.Create(SyntaxKind.ObjectInitializerExpression, SyntaxKind.ArrayInitializerExpression, SyntaxKind.CollectionInitializerExpression, SyntaxKindEx.WithInitializerExpression);
6767

6868
/// <inheritdoc/>
6969
public override ImmutableArray<DiagnosticDescriptor> SupportedDiagnostics { get; } =

0 commit comments

Comments
 (0)