Skip to content

Commit 0043337

Browse files
authored
Merge pull request #2487 from sharwell/enum-line
Handle single-line enum declarations
2 parents dd487b5 + 1b49c76 commit 0043337

2 files changed

Lines changed: 23 additions & 4 deletions

File tree

StyleCop.Analyzers/StyleCop.Analyzers.Test/MaintainabilityRules/SA1413UnitTests.cs

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -488,6 +488,24 @@ public async Task VerifyEnumWithoutTrailingCommaAsync()
488488
await this.VerifyCSharpFixAsync(testCode, fixedTestCode).ConfigureAwait(false);
489489
}
490490

491+
[Fact]
492+
[WorkItem(2467, "https://github.com/DotNetAnalyzers/StyleCopAnalyzers/issues/2467")]
493+
public async Task VerifySingleLineEnumWithoutCommaAsync()
494+
{
495+
// SA1413 is not reported whether or not the comma is included for single-line enums
496+
var testCode = @"enum TestEnum { One, Two }";
497+
await this.VerifyCSharpDiagnosticAsync(testCode, EmptyDiagnosticResults, CancellationToken.None).ConfigureAwait(false);
498+
}
499+
500+
[Fact]
501+
[WorkItem(2467, "https://github.com/DotNetAnalyzers/StyleCopAnalyzers/issues/2467")]
502+
public async Task VerifySingleLineEnumWithCommaAsync()
503+
{
504+
// SA1413 is not reported whether or not the comma is included for single-line enums
505+
var testCode = @"enum TestEnum { One, Two, }";
506+
await this.VerifyCSharpDiagnosticAsync(testCode, EmptyDiagnosticResults, CancellationToken.None).ConfigureAwait(false);
507+
}
508+
491509
/// <summary>
492510
/// Verifies that the last value of an enum without a trailing comma produces a diagnostic.
493511
/// </summary>

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

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@ internal class SA1413UseTrailingCommasInMultiLineInitializers : DiagnosticAnalyz
5858

5959
private static readonly Action<SyntaxNodeAnalysisContext> HandleObjectInitializerAction = HandleObjectInitializer;
6060
private static readonly Action<SyntaxNodeAnalysisContext> HandleAnonymousObjectInitializerAction = HandleAnonymousObjectInitializer;
61+
private static readonly Action<SyntaxNodeAnalysisContext> HandleEnumDeclarationAction = HandleEnumDeclaration;
6162

6263
private static readonly ImmutableArray<SyntaxKind> ObjectInitializerKinds =
6364
ImmutableArray.Create(SyntaxKind.ObjectInitializerExpression, SyntaxKind.ArrayInitializerExpression, SyntaxKind.CollectionInitializerExpression);
@@ -74,19 +75,19 @@ public override void Initialize(AnalysisContext context)
7475

7576
context.RegisterSyntaxNodeAction(HandleObjectInitializerAction, ObjectInitializerKinds);
7677
context.RegisterSyntaxNodeAction(HandleAnonymousObjectInitializerAction, SyntaxKind.AnonymousObjectCreationExpression);
77-
context.RegisterSyntaxNodeAction(HandleEnumMemberDeclarationAction, SyntaxKind.EnumDeclaration);
78+
context.RegisterSyntaxNodeAction(HandleEnumDeclarationAction, SyntaxKind.EnumDeclaration);
7879
}
7980

80-
private static void HandleEnumMemberDeclarationAction(SyntaxNodeAnalysisContext context)
81+
private static void HandleEnumDeclaration(SyntaxNodeAnalysisContext context)
8182
{
8283
var initializer = (EnumDeclarationSyntax)context.Node;
8384
var lastMember = initializer.Members.LastOrDefault();
84-
if (lastMember == null)
85+
if (lastMember == null || !initializer.SpansMultipleLines())
8586
{
8687
return;
8788
}
8889

89-
if (initializer.Members.Count() != initializer.Members.SeparatorCount)
90+
if (initializer.Members.Count != initializer.Members.SeparatorCount)
9091
{
9192
context.ReportDiagnostic(Diagnostic.Create(Descriptor, lastMember.GetLocation()));
9293
}

0 commit comments

Comments
 (0)