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 @@ -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);

Loading…
Cancel
Save