Browse Source

Fixed detection of 'sealed' method modifier.

pull/10/head
Daniel Grunwald 16 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
if (methodDef.IsStatic) if (methodDef.IsStatic)
modifiers |= Modifiers.Static; 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; modifiers |= Modifiers.Abstract;
else if (methodDef.IsFinal) if (!methodDef.IsNewSlot)
modifiers |= Modifiers.Sealed; modifiers |= Modifiers.Override;
else if (methodDef.IsVirtual && methodDef.IsNewSlot) } else if (methodDef.IsFinal) {
modifiers |= Modifiers.Virtual; if (!methodDef.IsNewSlot) {
modifiers |= Modifiers.Sealed | Modifiers.Override;
}
} else if (methodDef.IsVirtual) {
if (methodDef.IsNewSlot)
modifiers |= Modifiers.Virtual;
else
modifiers |= Modifiers.Override;
}
return modifiers; return modifiers;
} }
#endregion #endregion

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

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

Loading…
Cancel
Save