Browse Source

#2685: Emit 'override' without 'newslot' as 'virtual' if there is no (known) method to override.

pull/2693/head
Siegfried Pammer 3 years ago
parent
commit
3e05a8d763
  1. 8
      ICSharpCode.Decompiler/CSharp/CSharpDecompiler.cs

8
ICSharpCode.Decompiler/CSharp/CSharpDecompiler.cs

@ -1567,6 +1567,14 @@ namespace ICSharpCode.Decompiler.CSharp
{ {
SetNewModifier(methodDecl); 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)) if (IsCovariantReturnOverride(method))
{ {
RemoveAttribute(methodDecl, KnownAttribute.PreserveBaseOverrides); RemoveAttribute(methodDecl, KnownAttribute.PreserveBaseOverrides);

Loading…
Cancel
Save