From ed8963cfe2deeb22733ad4c1974e798da9f1f12f Mon Sep 17 00:00:00 2001 From: CyrusNajmabadi Date: Wed, 19 Jul 2017 14:41:23 -0700 Subject: [PATCH] Support partial methods properly. --- .../AddAccessibilityModifiersTests.cs | 2 ++ .../AddAccessibilityModifiersTests.vb | 6 ++++++ .../CodeGeneration/CSharpSyntaxGenerator.cs | 15 ++++++++++++++- 3 files changed, 22 insertions(+), 1 deletion(-) diff --git a/src/EditorFeatures/CSharpTest/AddAccessibilityModifiers/AddAccessibilityModifiersTests.cs b/src/EditorFeatures/CSharpTest/AddAccessibilityModifiers/AddAccessibilityModifiersTests.cs index 5df795439fa..efc1addb689 100644 --- a/src/EditorFeatures/CSharpTest/AddAccessibilityModifiers/AddAccessibilityModifiersTests.cs +++ b/src/EditorFeatures/CSharpTest/AddAccessibilityModifiers/AddAccessibilityModifiersTests.cs @@ -50,6 +50,7 @@ struct NestedStruct { } void M1() { } public void M2() { } void I.M3() { } + partial void M4() { } int P1 { get; } public int P2 { get; } @@ -107,6 +108,7 @@ private struct NestedStruct { } private void M1() { } public void M2() { } void I.M3() { } + partial void M4() { } private int P1 { get; } public int P2 { get; } diff --git a/src/EditorFeatures/VisualBasicTest/AddAccessibilityModifiers/AddAccessibilityModifiersTests.vb b/src/EditorFeatures/VisualBasicTest/AddAccessibilityModifiers/AddAccessibilityModifiersTests.vb index 53acf2506b7..e68ebba4fee 100644 --- a/src/EditorFeatures/VisualBasicTest/AddAccessibilityModifiers/AddAccessibilityModifiersTests.vb +++ b/src/EditorFeatures/VisualBasicTest/AddAccessibilityModifiers/AddAccessibilityModifiersTests.vb @@ -61,6 +61,9 @@ namespace N public function M5() as integer end function + partial sub M6() + end sub + property P1 as integer property P2 as integer @@ -150,6 +153,9 @@ namespace N public function M5() as integer end function + Public partial sub M6() + end sub + Public property P1 as integer Public property P2 as integer diff --git a/src/Workspaces/CSharp/Portable/CodeGeneration/CSharpSyntaxGenerator.cs b/src/Workspaces/CSharp/Portable/CodeGeneration/CSharpSyntaxGenerator.cs index 016941ab5b3..00354c091d6 100644 --- a/src/Workspaces/CSharp/Portable/CodeGeneration/CSharpSyntaxGenerator.cs +++ b/src/Workspaces/CSharp/Portable/CodeGeneration/CSharpSyntaxGenerator.cs @@ -1444,7 +1444,20 @@ internal override bool CanHaveAccessibility(SyntaxNode declaration) return ((IndexerDeclarationSyntax)declaration).ExplicitInterfaceSpecifier == null; case SyntaxKind.MethodDeclaration: - return ((MethodDeclarationSyntax)declaration).ExplicitInterfaceSpecifier == null; + var method = (MethodDeclarationSyntax)declaration; + if (method.ExplicitInterfaceSpecifier != null) + { + // explicit interface methods can't have accessibility. + return false; + } + + if (method.Modifiers.Any(SyntaxKind.PartialKeyword)) + { + // partial methods can't have accessibility modifiers. + return false; + } + + return true; case SyntaxKind.EventDeclaration: return ((EventDeclarationSyntax)declaration).ExplicitInterfaceSpecifier == null; -- GitLab