diff --git a/src/Compilers/CSharp/Portable/Syntax/MethodDeclarationSyntax.cs b/src/Compilers/CSharp/Portable/Syntax/MethodDeclarationSyntax.cs index 877bc4db0eea7952c756444360ed1ab1a06c8748..417068e1b9324204cfa0044c440cc063f48349ea 100644 --- a/src/Compilers/CSharp/Portable/Syntax/MethodDeclarationSyntax.cs +++ b/src/Compilers/CSharp/Portable/Syntax/MethodDeclarationSyntax.cs @@ -34,7 +34,18 @@ public partial class SyntaxFactory BlockSyntax body, SyntaxToken semicolonToken) { - return SyntaxFactory.MethodDeclaration(attributeLists, modifiers, returnType, explicitInterfaceSpecifier, identifier, typeParameterList, parameterList, constraintClauses, body, null, default(SyntaxToken)); + return SyntaxFactory.MethodDeclaration( + attributeLists, + modifiers, + returnType, + explicitInterfaceSpecifier, + identifier, + typeParameterList, + parameterList, + constraintClauses, + body, + null, + semicolonToken); } } } diff --git a/src/Compilers/CSharp/Test/Syntax/Syntax/SyntaxFactoryTests.cs b/src/Compilers/CSharp/Test/Syntax/Syntax/SyntaxFactoryTests.cs index 9db49d1b7e5ac94e77ab0a0dc235811bccb6eabc..b91d2c5f909982274a0530f00d3155608b4a98f7 100644 --- a/src/Compilers/CSharp/Test/Syntax/Syntax/SyntaxFactoryTests.cs +++ b/src/Compilers/CSharp/Test/Syntax/Syntax/SyntaxFactoryTests.cs @@ -542,5 +542,24 @@ public void TestSpacingOnCoalescing() var syntaxNode3 = SyntaxFactory.ParseExpression("x is object??y").NormalizeWhitespace(); Assert.Equal("x is object ?? y", syntaxNode3.ToFullString()); } + + [Fact] + [WorkItem(37467, "https://github.com/dotnet/roslyn/issues/37467")] + public void TestUnnecessarySemicolon() + { + var syntaxNode = SyntaxFactory.MethodDeclaration( + attributeLists: default, + modifiers: default, + returnType: SyntaxFactory.ParseTypeName("int[]"), + explicitInterfaceSpecifier: default, + identifier: SyntaxFactory.Identifier("M"), + typeParameterList: default, + parameterList: SyntaxFactory.ParseParameterList("()"), + constraintClauses: default, + body: (BlockSyntax)SyntaxFactory.ParseStatement("{}"), + semicolonToken: SyntaxFactory.Token(SyntaxKind.SemicolonToken) + ); + Assert.Equal("int[]M(){};", syntaxNode.ToFullString()); + } } }