未验证 提交 5b097cf6 编写于 作者: A AlekseyTs 提交者: GitHub

Change accessibility of explicit implementations in interfaces to 'private'. (#35506)

上级 472276ac
......@@ -144,9 +144,9 @@ internal static DeclarationModifiers AdjustModifiersForAnInterfaceMember(Declara
if ((mods & DeclarationModifiers.AccessibilityMask) == 0)
{
if ((mods & DeclarationModifiers.Partial) == 0)
if ((mods & DeclarationModifiers.Partial) == 0 && !isExplicitInterfaceImplementation)
{
mods |= isExplicitInterfaceImplementation ? DeclarationModifiers.Protected : DeclarationModifiers.Public;
mods |= DeclarationModifiers.Public;
}
else
{
......
......@@ -423,7 +423,7 @@ private void CheckAccessibility(Location location, DiagnosticBag diagnostics, bo
DiagnosticBag diagnostics, out bool modifierErrors)
{
bool isInterface = this.ContainingType.IsInterface;
var defaultAccess = isInterface ? (explicitInterfaceImplementation ? DeclarationModifiers.Protected : DeclarationModifiers.Public) : DeclarationModifiers.Private;
var defaultAccess = isInterface && !explicitInterfaceImplementation ? DeclarationModifiers.Public : DeclarationModifiers.Private;
var defaultInterfaceImplementationModifiers = DeclarationModifiers.None;
// Check that the set of modifiers is allowed
......
......@@ -831,7 +831,7 @@ private DeclarationModifiers MakeModifiers(SyntaxTokenList modifiers, MethodKind
{
bool isInterface = this.ContainingType.IsInterface;
bool isExplicitInterfaceImplementation = methodKind == MethodKind.ExplicitInterfaceImplementation;
var defaultAccess = isInterface && modifiers.IndexOf(SyntaxKind.PartialKeyword) < 0 ? (isExplicitInterfaceImplementation ? DeclarationModifiers.Protected : DeclarationModifiers.Public) : DeclarationModifiers.Private;
var defaultAccess = isInterface && modifiers.IndexOf(SyntaxKind.PartialKeyword) < 0 && !isExplicitInterfaceImplementation ? DeclarationModifiers.Public : DeclarationModifiers.Private;
// Check that the set of modifiers is allowed
var allowedModifiers = DeclarationModifiers.Partial | DeclarationModifiers.Unsafe;
......
......@@ -835,7 +835,7 @@ private void CheckAccessibility(Location location, DiagnosticBag diagnostics, bo
Location location, DiagnosticBag diagnostics, out bool modifierErrors)
{
bool isInterface = this.ContainingType.IsInterface;
var defaultAccess = isInterface ? (isExplicitInterfaceImplementation ? DeclarationModifiers.Protected : DeclarationModifiers.Public) : DeclarationModifiers.Private;
var defaultAccess = isInterface && !isExplicitInterfaceImplementation ? DeclarationModifiers.Public : DeclarationModifiers.Private;
// Check that the set of modifiers is allowed
var allowedModifiers = DeclarationModifiers.Unsafe;
......
......@@ -29150,7 +29150,7 @@ private static void ValidateExplicitImplementation(MethodSymbol m1)
Assert.False(m1.IsExtern);
Assert.False(m1.IsAsync);
Assert.False(m1.IsOverride);
Assert.Equal(Accessibility.Protected, m1.DeclaredAccessibility);
Assert.Equal(Accessibility.Private, m1.DeclaredAccessibility);
if (m1.ContainingModule is PEModuleSymbol peModule)
{
......@@ -29703,7 +29703,7 @@ private static void ValidateExplicitExternImplementation(MethodSymbol m1)
Assert.NotEqual(m1.OriginalDefinition is PEMethodSymbol, m1.IsExtern);
Assert.False(m1.IsAsync);
Assert.False(m1.IsOverride);
Assert.Equal(Accessibility.Protected, m1.DeclaredAccessibility);
Assert.Equal(Accessibility.Private, m1.DeclaredAccessibility);
if (m1.ContainingModule is PEModuleSymbol peModule)
{
......@@ -29793,7 +29793,7 @@ void Validate2(MethodSymbol m1)
Assert.False(m1.IsExtern);
Assert.NotEqual(m1 is PEMethodSymbol, m1.IsAsync);
Assert.False(m1.IsOverride);
Assert.Equal(Accessibility.Protected, m1.DeclaredAccessibility);
Assert.Equal(Accessibility.Private, m1.DeclaredAccessibility);
if (m1.ContainingModule is PEModuleSymbol peModule)
{
......@@ -32211,7 +32211,7 @@ private static void ValidateExplicitImplementation(PropertySymbol m1)
Assert.False(m1.IsStatic);
Assert.False(m1.IsExtern);
Assert.False(m1.IsOverride);
Assert.Equal(Accessibility.Protected, m1.DeclaredAccessibility);
Assert.Equal(Accessibility.Private, m1.DeclaredAccessibility);
ValidateAccessor(m1.GetMethod);
ValidateAccessor(m1.SetMethod);
......@@ -32829,7 +32829,7 @@ private static void ValidateExplicitExternImplementation(PropertySymbol m1)
Assert.False(m1.IsStatic);
Assert.NotEqual(m1.OriginalDefinition is PEPropertySymbol, m1.IsExtern);
Assert.False(m1.IsOverride);
Assert.Equal(Accessibility.Protected, m1.DeclaredAccessibility);
Assert.Equal(Accessibility.Private, m1.DeclaredAccessibility);
ValidateAccessor(m1.GetMethod);
ValidateAccessor(m1.SetMethod);
......@@ -34426,7 +34426,7 @@ private static void ValidateExplicitImplementation(EventSymbol m1)
Assert.False(m1.IsStatic);
Assert.False(m1.IsExtern);
Assert.False(m1.IsOverride);
Assert.Equal(Accessibility.Protected, m1.DeclaredAccessibility);
Assert.Equal(Accessibility.Private, m1.DeclaredAccessibility);
ValidateAccessor(m1.AddMethod);
ValidateAccessor(m1.RemoveMethod);
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册