From 73c898664f8f2379f3ccdff00d3164ddb73d0957 Mon Sep 17 00:00:00 2001 From: Siegfried Pammer Date: Mon, 23 Aug 2021 08:20:47 +0200 Subject: [PATCH] Fix #2484: Private modifier incorrectly applied to interface static constructors --- .../TestCases/Pretty/InterfaceTests.cs | 5 +++++ .../CSharp/Syntax/TypeSystemAstBuilder.cs | 12 +++++------- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/ICSharpCode.Decompiler.Tests/TestCases/Pretty/InterfaceTests.cs b/ICSharpCode.Decompiler.Tests/TestCases/Pretty/InterfaceTests.cs index 05da939e3..622b1ee42 100644 --- a/ICSharpCode.Decompiler.Tests/TestCases/Pretty/InterfaceTests.cs +++ b/ICSharpCode.Decompiler.Tests/TestCases/Pretty/InterfaceTests.cs @@ -32,6 +32,11 @@ namespace ICSharpCode.Decompiler.Tests.TestCases.Pretty void Method(); #if CS80 + static IA() + { + + } + void DefaultMethod() { Method(); diff --git a/ICSharpCode.Decompiler/CSharp/Syntax/TypeSystemAstBuilder.cs b/ICSharpCode.Decompiler/CSharp/Syntax/TypeSystemAstBuilder.cs index c6fd018e8..334ca0e6a 100644 --- a/ICSharpCode.Decompiler/CSharp/Syntax/TypeSystemAstBuilder.cs +++ b/ICSharpCode.Decompiler/CSharp/Syntax/TypeSystemAstBuilder.cs @@ -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; } }