Browse Source

'override' is only valid outside of interfaces.

pull/2568/head
Siegfried Pammer 4 years ago
parent
commit
01e5e70bf7
  1. 18
      ICSharpCode.Decompiler/CSharp/Syntax/TypeSystemAstBuilder.cs

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

@ -2318,11 +2318,21 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
{ {
m |= Modifiers.Static; m |= Modifiers.Static;
} }
if (member is IMethod method && method.ThisIsRefReadOnly
&& method.DeclaringTypeDefinition?.IsReadOnly == false)
{
m |= Modifiers.Readonly;
}
var declaringType = member.DeclaringType; var declaringType = member.DeclaringType;
if (declaringType.Kind == TypeKind.Interface) if (declaringType.Kind == TypeKind.Interface)
{ {
if (!member.IsVirtual && !member.IsAbstract && !member.IsOverride && member.Accessibility != Accessibility.Private && member is IMethod method2 && method2.HasBody) if (!member.IsStatic && !member.IsVirtual && !member.IsAbstract && !member.IsOverride
&& member.Accessibility != Accessibility.Private
&& member is IMethod method2 && method2.HasBody)
{
m |= Modifiers.Sealed; m |= Modifiers.Sealed;
}
if (member.IsAbstract && member.IsStatic) if (member.IsAbstract && member.IsStatic)
m |= Modifiers.Abstract; m |= Modifiers.Abstract;
} }
@ -2332,13 +2342,11 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
m |= Modifiers.Abstract; m |= Modifiers.Abstract;
else if (member.IsVirtual && !member.IsOverride) else if (member.IsVirtual && !member.IsOverride)
m |= Modifiers.Virtual; m |= Modifiers.Virtual;
if (member.IsOverride && !member.IsExplicitInterfaceImplementation)
m |= Modifiers.Override;
if (member.IsSealed && !member.IsExplicitInterfaceImplementation) if (member.IsSealed && !member.IsExplicitInterfaceImplementation)
m |= Modifiers.Sealed; m |= Modifiers.Sealed;
} }
if (member.IsOverride && !member.IsExplicitInterfaceImplementation)
m |= Modifiers.Override;
if (member is IMethod method && method.ThisIsRefReadOnly && method.DeclaringTypeDefinition?.IsReadOnly == false)
m |= Modifiers.Readonly;
} }
} }
return m; return m;

Loading…
Cancel
Save