From 3e05a8d763eb62df7667b97192acdd74d5956229 Mon Sep 17 00:00:00 2001 From: Siegfried Pammer Date: Tue, 10 May 2022 22:21:48 +0200 Subject: [PATCH] #2685: Emit 'override' without 'newslot' as 'virtual' if there is no (known) method to override. --- ICSharpCode.Decompiler/CSharp/CSharpDecompiler.cs | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/ICSharpCode.Decompiler/CSharp/CSharpDecompiler.cs b/ICSharpCode.Decompiler/CSharp/CSharpDecompiler.cs index ebf80585a..049042ea2 100644 --- a/ICSharpCode.Decompiler/CSharp/CSharpDecompiler.cs +++ b/ICSharpCode.Decompiler/CSharp/CSharpDecompiler.cs @@ -1567,6 +1567,14 @@ namespace ICSharpCode.Decompiler.CSharp { SetNewModifier(methodDecl); } + else if (!method.IsVirtual && method.IsOverride && InheritanceHelper.GetBaseMember(method) == null) + { + methodDecl.Modifiers &= ~Modifiers.Override; + if (!method.DeclaringTypeDefinition.IsSealed) + { + methodDecl.Modifiers |= Modifiers.Virtual; + } + } if (IsCovariantReturnOverride(method)) { RemoveAttribute(methodDecl, KnownAttribute.PreserveBaseOverrides);