From 020e618007314e9603478651a776cdd41d7dc5d4 Mon Sep 17 00:00:00 2001 From: Youssef1313 Date: Tue, 11 May 2021 20:56:52 +0200 Subject: [PATCH 1/3] Fix syntax normalizer to add space around before colon in constructor initializer --- .../Portable/Syntax/SyntaxNormalizer.cs | 5 ++-- .../Syntax/Syntax/SyntaxNormalizerTests.cs | 29 +++++++++++++++++++ 2 files changed, 31 insertions(+), 3 deletions(-) diff --git a/src/Compilers/CSharp/Portable/Syntax/SyntaxNormalizer.cs b/src/Compilers/CSharp/Portable/Syntax/SyntaxNormalizer.cs index 79bff6b40b8b3..d5f482bb80f08 100644 --- a/src/Compilers/CSharp/Portable/Syntax/SyntaxNormalizer.cs +++ b/src/Compilers/CSharp/Portable/Syntax/SyntaxNormalizer.cs @@ -5,8 +5,6 @@ using System; using System.Diagnostics; using System.Diagnostics.CodeAnalysis; -using Microsoft.CodeAnalysis.CSharp.Symbols; -using Microsoft.CodeAnalysis.CSharp.Syntax; using Microsoft.CodeAnalysis.PooledObjects; using Microsoft.CodeAnalysis.Text; using Roslyn.Utilities; @@ -604,7 +602,8 @@ private static bool NeedsSeparator(SyntaxToken token, SyntaxToken next) if (next.IsKind(SyntaxKind.ColonToken)) { if (next.Parent.IsKind(SyntaxKind.BaseList) || - next.Parent.IsKind(SyntaxKind.TypeParameterConstraintClause)) + next.Parent.IsKind(SyntaxKind.TypeParameterConstraintClause) || + next.Parent is ConstructorInitializerSyntax) { return true; } diff --git a/src/Compilers/CSharp/Test/Syntax/Syntax/SyntaxNormalizerTests.cs b/src/Compilers/CSharp/Test/Syntax/Syntax/SyntaxNormalizerTests.cs index 9def10856ffca..5877c306caa05 100644 --- a/src/Compilers/CSharp/Test/Syntax/Syntax/SyntaxNormalizerTests.cs +++ b/src/Compilers/CSharp/Test/Syntax/Syntax/SyntaxNormalizerTests.cs @@ -920,6 +920,35 @@ public void TestNormalizeFunctionPointerWithUnmanagedCallingConventionAndSpecifi TestNormalizeDeclaration(content, expected); } + [Fact] + [WorkItem(53254, "https://github.com/dotnet/roslyn/issues/53254")] + public void TestNormalizeColonInConstructorInitializer() + { + var content = +@"class Base +{ +} + +class Derived : Base +{ + public Derived():base(){} +}"; + + var expected = +@"class Base +{ +} + +class Derived : Base +{ + public Derived() : base() + { + } +}"; + + TestNormalizeDeclaration(content, expected); + } + [Fact] [WorkItem(49732, "https://github.com/dotnet/roslyn/issues/49732")] public void TestNormalizeXmlInDocComment() From 784686b4e7142f4edea7b0422c1e6fa1d9967b18 Mon Sep 17 00:00:00 2001 From: Youssef Victor Date: Tue, 11 May 2021 21:14:58 +0200 Subject: [PATCH 2/3] Fix test --- .../CSharp/Test/Syntax/Syntax/SyntaxNormalizerTests.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Compilers/CSharp/Test/Syntax/Syntax/SyntaxNormalizerTests.cs b/src/Compilers/CSharp/Test/Syntax/Syntax/SyntaxNormalizerTests.cs index 5877c306caa05..3b57464ac3a0f 100644 --- a/src/Compilers/CSharp/Test/Syntax/Syntax/SyntaxNormalizerTests.cs +++ b/src/Compilers/CSharp/Test/Syntax/Syntax/SyntaxNormalizerTests.cs @@ -540,12 +540,12 @@ public void TestSpacingOnInvocationLikeKeywords() // no space between this and ( TestNormalizeDeclaration( "class C { C() : this () { } }", - "class C\r\n{\r\n C(): this()\r\n {\r\n }\r\n}"); + "class C\r\n{\r\n C() : this()\r\n {\r\n }\r\n}"); // no space between base and ( TestNormalizeDeclaration( "class C { C() : base () { } }", - "class C\r\n{\r\n C(): base()\r\n {\r\n }\r\n}"); + "class C\r\n{\r\n C() : base()\r\n {\r\n }\r\n}"); // no space between checked and ( TestNormalizeExpression("checked (a)", "checked(a)"); From 6dae702f6237958031c391b24c1f2c084ca4fdbe Mon Sep 17 00:00:00 2001 From: Youssef Victor Date: Tue, 11 May 2021 21:42:54 +0200 Subject: [PATCH 3/3] Update SyntaxGeneratorTests.cs --- .../CSharpTest/CodeGeneration/SyntaxGeneratorTests.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Workspaces/CSharpTest/CodeGeneration/SyntaxGeneratorTests.cs b/src/Workspaces/CSharpTest/CodeGeneration/SyntaxGeneratorTests.cs index 013e0dd620b23..8635e1da7e696 100644 --- a/src/Workspaces/CSharpTest/CodeGeneration/SyntaxGeneratorTests.cs +++ b/src/Workspaces/CSharpTest/CodeGeneration/SyntaxGeneratorTests.cs @@ -971,7 +971,7 @@ public void TestConstructorDeclaration() Generator.ConstructorDeclaration("c", parameters: new[] { Generator.ParameterDeclaration("p", Generator.IdentifierName("t")) }, baseConstructorArguments: new[] { Generator.IdentifierName("p") }), - "c(t p): base(p)\r\n{\r\n}"); + "c(t p) : base(p)\r\n{\r\n}"); } [Fact]