Skip to content

Commit 61d36f8

Browse files
committed
Added complex element initializer support to SA1500
1 parent 950cc79 commit 61d36f8

2 files changed

Lines changed: 71 additions & 1 deletion

File tree

StyleCop.Analyzers/StyleCop.Analyzers.Test/LayoutRules/SA1500/SA1500UnitTests.ObjectInitializers.cs

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -430,5 +430,75 @@ private class Contact
430430
await this.VerifyCSharpDiagnosticAsync(fixedTestCode, EmptyDiagnosticResults, CancellationToken.None).ConfigureAwait(false);
431431
await this.VerifyCSharpFixAsync(testCode, fixedTestCode).ConfigureAwait(false);
432432
}
433+
434+
/// <summary>
435+
/// Verifies that complex element initializers are handled properly.
436+
/// Regression for #1679
437+
/// </summary>
438+
/// <returns>A <see cref="Task"/> representing the asynchronous unit test.</returns>
439+
[Fact]
440+
public async Task TestComplexElementInitializerAsync()
441+
{
442+
var testCode = @"using System.Collections.Generic;
443+
444+
public class TestClass
445+
{
446+
// Invalid object initializer #1
447+
private Dictionary<int, int> test1 = new Dictionary<int, int> {
448+
{ 1, 1 }
449+
};
450+
451+
// Invalid object initializer #2
452+
private Dictionary<int, int> test2 = new Dictionary<int, int>
453+
{
454+
{ 1, 1 } };
455+
456+
// Invalid object initializer #3
457+
private Dictionary<int, int> test3 = new Dictionary<int, int> {
458+
{ 1, 1 } };
459+
}
460+
";
461+
462+
var fixedCode = @"using System.Collections.Generic;
463+
464+
public class TestClass
465+
{
466+
// Invalid object initializer #1
467+
private Dictionary<int, int> test1 = new Dictionary<int, int>
468+
{
469+
{ 1, 1 }
470+
};
471+
472+
// Invalid object initializer #2
473+
private Dictionary<int, int> test2 = new Dictionary<int, int>
474+
{
475+
{ 1, 1 }
476+
};
477+
478+
// Invalid object initializer #3
479+
private Dictionary<int, int> test3 = new Dictionary<int, int>
480+
{
481+
{ 1, 1 }
482+
};
483+
}
484+
";
485+
486+
DiagnosticResult[] expected =
487+
{
488+
// Invalid object initializer #1
489+
this.CSharpDiagnostic().WithLocation(6, 67),
490+
491+
// Invalid object initializer #2
492+
this.CSharpDiagnostic().WithLocation(13, 18),
493+
494+
// Invalid object initializer #3
495+
this.CSharpDiagnostic().WithLocation(16, 67),
496+
this.CSharpDiagnostic().WithLocation(17, 18)
497+
};
498+
499+
await this.VerifyCSharpDiagnosticAsync(testCode, expected, CancellationToken.None).ConfigureAwait(false);
500+
await this.VerifyCSharpDiagnosticAsync(fixedCode, EmptyDiagnosticResults, CancellationToken.None).ConfigureAwait(false);
501+
await this.VerifyCSharpFixAsync(testCode, fixedCode).ConfigureAwait(false);
502+
}
433503
}
434504
}

StyleCop.Analyzers/StyleCop.Analyzers/LayoutRules/SA1500CurlyBracketsForMultiLineStatementsMustNotShareLine.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ internal class SA1500CurlyBracketsForMultiLineStatementsMustNotShareLine : Diagn
7474
ImmutableArray.Create(SyntaxKind.ClassDeclaration, SyntaxKind.StructDeclaration, SyntaxKind.InterfaceDeclaration, SyntaxKind.EnumDeclaration);
7575

7676
private static readonly ImmutableArray<SyntaxKind> InitializerExpressionKinds =
77-
ImmutableArray.Create(SyntaxKind.ObjectInitializerExpression, SyntaxKind.ArrayInitializerExpression, SyntaxKind.CollectionInitializerExpression);
77+
ImmutableArray.Create(SyntaxKind.ObjectInitializerExpression, SyntaxKind.ArrayInitializerExpression, SyntaxKind.CollectionInitializerExpression, SyntaxKind.ComplexElementInitializerExpression);
7878

7979
private static readonly Action<CompilationStartAnalysisContext> CompilationStartAction = HandleCompilationStart;
8080
private static readonly Action<SyntaxNodeAnalysisContext> NamespaceDeclarationAction = HandleNamespaceDeclaration;

0 commit comments

Comments
 (0)