Added support for defining non-virtual methods in map.xml.

This commit is contained in:
jfrijters 2008-02-09 17:38:41 +00:00
Родитель c5ca5009ae
Коммит 74b3ed1921
1 изменённых файлов: 14 добавлений и 5 удалений

Просмотреть файл

@ -433,14 +433,23 @@ namespace IKVM.Internal
}
else if(!isConstructor)
{
attribs |= MethodAttributes.Virtual;
if((modifiers & Modifiers.Final) != 0)
// NOTE we're abusing the MethodAttributes.NewSlot and Modifiers.Final combination to mean non-virtual
if((modifiers & Modifiers.Final) != 0 && (attribs & MethodAttributes.NewSlot) != 0 && (attribs & MethodAttributes.Virtual) == 0)
{
attribs |= MethodAttributes.Final;
// remove NewSlot, because it doesn't make sense on a non-virtual method
attribs &= ~MethodAttributes.NewSlot;
}
else if((modifiers & Modifiers.Abstract) != 0)
else
{
attribs |= MethodAttributes.Abstract;
attribs |= MethodAttributes.Virtual;
if((modifiers & Modifiers.Final) != 0)
{
attribs |= MethodAttributes.Final;
}
else if((modifiers & Modifiers.Abstract) != 0)
{
attribs |= MethodAttributes.Abstract;
}
}
}
if((modifiers & Modifiers.Synchronized) != 0)