Browse Source

Fixed detection of 'sealed' method modifier.

pull/10/head
Daniel Grunwald 15 years ago
parent
commit
86f2b32ddc
  1. 20
      ICSharpCode.Decompiler/Ast/AstBuilder.cs
  2. 6
      NRefactory/ICSharpCode.NRefactory/TypeSystem/CecilLoader.cs

20
ICSharpCode.Decompiler/Ast/AstBuilder.cs

@ -361,15 +361,21 @@ namespace Decompiler @@ -361,15 +361,21 @@ namespace Decompiler
if (methodDef.IsStatic)
modifiers |= Modifiers.Static;
else if ((methodDef.IsAbstract || methodDef.IsFinal || methodDef.IsVirtual) && !methodDef.IsNewSlot)
modifiers |= Modifiers.Override;
if (methodDef.IsAbstract)
if (methodDef.IsAbstract) {
modifiers |= Modifiers.Abstract;
else if (methodDef.IsFinal)
modifiers |= Modifiers.Sealed;
else if (methodDef.IsVirtual && methodDef.IsNewSlot)
modifiers |= Modifiers.Virtual;
if (!methodDef.IsNewSlot)
modifiers |= Modifiers.Override;
} else if (methodDef.IsFinal) {
if (!methodDef.IsNewSlot) {
modifiers |= Modifiers.Sealed | Modifiers.Override;
}
} else if (methodDef.IsVirtual) {
if (methodDef.IsNewSlot)
modifiers |= Modifiers.Virtual;
else
modifiers |= Modifiers.Override;
}
return modifiers;
}
#endregion

6
NRefactory/ICSharpCode.NRefactory/TypeSystem/CecilLoader.cs

@ -759,8 +759,10 @@ namespace ICSharpCode.NRefactory.TypeSystem @@ -759,8 +759,10 @@ namespace ICSharpCode.NRefactory.TypeSystem
m.IsAbstract = true;
m.IsOverride = !method.IsNewSlot;
} else if (method.IsFinal) {
m.IsSealed = true;
m.IsOverride = !method.IsNewSlot;
if (!method.IsNewSlot) {
m.IsSealed = true;
m.IsOverride = true;
}
} else if (method.IsVirtual) {
if (method.IsNewSlot)
m.IsVirtual = true;

Loading…
Cancel
Save