Skip to content

Commit b6dbe11

Browse files
committed
C#: Fix enum semicolon printing
1 parent bd713ef commit b6dbe11

2 files changed

Lines changed: 15 additions & 1 deletion

File tree

rewrite-csharp/csharp/OpenRewrite/CSharp/CSharpParser.cs

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -750,10 +750,19 @@ public override J VisitEnumDeclaration(EnumDeclarationSyntax node)
750750

751751
_cursor = node.CloseBraceToken.Span.End;
752752

753+
// Handle trailing semicolon (e.g., `enum Color { ... };`)
754+
var enumMarkers = Markers.Empty;
755+
if (node.SemicolonToken.Span.Length > 0)
756+
{
757+
SkipTo(node.SemicolonToken.SpanStart);
758+
SkipToken(node.SemicolonToken);
759+
enumMarkers = Markers.Build([new Semicolon(Guid.NewGuid())]);
760+
}
761+
753762
return new EnumDeclaration(
754763
Guid.NewGuid(),
755764
prefix,
756-
Markers.Empty,
765+
enumMarkers,
757766
attributeLists.Count > 0 ? attributeLists : null,
758767
modifiers,
759768
new JLeftPadded<Identifier>(enumPrefix, name),

rewrite-csharp/csharp/OpenRewrite/CSharp/CSharpPrinter.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,11 @@ protected void PrintStatementTerminator(Statement statement, PrintOutputCapture<
9292
p.Append(';');
9393
break;
9494

95+
// EnumDeclaration: trailing semicolon after closing brace (enum Color { ... };)
96+
case EnumDeclaration ed when ed.Markers.FindFirst<Semicolon>() != null:
97+
p.Append(';');
98+
break;
99+
95100
// PropertyDeclaration ends with ';' when it has expression body or initializer
96101
case PropertyDeclaration pd when pd.ExpressionBody != null || pd.Initializer != null:
97102
p.Append(';');

0 commit comments

Comments
 (0)