Browse Source

Fix #2484: Private modifier incorrectly applied to interface static constructors

pull/2489/head
Siegfried Pammer 4 years ago
parent
commit
73c898664f
  1. 5
      ICSharpCode.Decompiler.Tests/TestCases/Pretty/InterfaceTests.cs
  2. 12
      ICSharpCode.Decompiler/CSharp/Syntax/TypeSystemAstBuilder.cs

5
ICSharpCode.Decompiler.Tests/TestCases/Pretty/InterfaceTests.cs

@ -32,6 +32,11 @@ namespace ICSharpCode.Decompiler.Tests.TestCases.Pretty @@ -32,6 +32,11 @@ namespace ICSharpCode.Decompiler.Tests.TestCases.Pretty
void Method();
#if CS80
static IA()
{
}
void DefaultMethod()
{
Method();

12
ICSharpCode.Decompiler/CSharp/Syntax/TypeSystemAstBuilder.cs

@ -2259,20 +2259,18 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax @@ -2259,20 +2259,18 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
var declaringType = member.DeclaringType;
if (member.IsExplicitInterfaceImplementation)
return false;
if (declaringType != null && declaringType.Kind == TypeKind.Interface)
{
return member.Accessibility != Accessibility.Public;
}
switch (member.SymbolKind)
{
case SymbolKind.Constructor:
return !member.IsStatic;
case SymbolKind.Destructor:
return false;
case SymbolKind.Method:
return !((IMethod)member).IsLocalFunction;
default:
return true;
if (declaringType?.Kind == TypeKind.Interface)
{
return member.Accessibility != Accessibility.Public;
}
return member is not IMethod method || !method.IsLocalFunction;
}
}

Loading…
Cancel
Save